Skip to content

Commit

Permalink
- mysql에 저장하던 방식을 redis 와 mongoDB를 활용하여 분산하고, gateWay에서 collaborative…
Browse files Browse the repository at this point in the history
… 서비스하나만 알 수 있게 의존성 분리, 브레드 크럼 구현 (#172)

* chore: 브랜치 변경을 위한 작업 내용 저장

* feat: redis to mongodb

* fix: 예시 코드 삭제

* chore: 작업중인 내용 저장

* fix: module dependency fix

* fix: docker-compose

* fix: loggerService

* fix: dependency

* chore: v2 버전 스위칭을 위한 주석 처리

* chore: v2 버전 스위칭을 위한 주석 처리

* feat: 작업 내용 저장을 위한 커밋

* feat: 작업 내용 저장용 커밋

* fix: yjsgate 로직 수정 반영

* fix: elk  삭제

* feat: breadcrum

* feat: loggerservice delete

* feat: loggerservice delete

* fix: noteService

* feat: breadcrumb 작업 및 spaceService, noteService MongoDB 변경 및 redisService 추가

* chore: controller 수정

* fix: api 반환값 수정

* fix: logger 메시지 수정

* fix: nginx

* fix: nginx

* fix: docker-compose

* fix: note

* fix: collaborative service
  • Loading branch information
fru1tworld authored Nov 30, 2024
1 parent 88904fc commit 705fff4
Show file tree
Hide file tree
Showing 58 changed files with 11,432 additions and 6,709 deletions.
78 changes: 2 additions & 76 deletions docker-compose.override.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ services:
- "6379:6379"
networks:
- app-network
command: redis-server --bind 0.0.0.0
command: redis-server --bind 0.0.0.0 --requirepass 1234

mysql:
image: mysql:8.0
Expand Down Expand Up @@ -54,10 +54,8 @@ services:
- MYSQL_PASSWORD=1234
- MYSQL_USER=honey
- NODE_ENV=dev
- ELASTIC_NODE=http://elsatic:9200
- ELASTIC_USERNAME=honey
- ELASTIC_PASSWORD=1234
- REDIS_HOST=redis-container
- REDIS_PASSWORD=1234
- REDIS_PORT=6379
- REDIS_TTL=3600
- MONGO_HOST=mongodb-container
Expand Down Expand Up @@ -111,81 +109,9 @@ services:
timeout: 5s
retries: 10

elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
ports:
- "9200:9200"
- "9300:9300"
networks:
- app-network
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9200/_cat/health || exit 1"]
interval: 10s
timeout: 5s
retries: 3

kibana:
image: docker.elastic.co/kibana/kibana:8.12.0
container_name: kibana
depends_on:
elasticsearch:
condition: service_healthy
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- "5601:5601"
networks:
- app-network
filebeat:
image: docker.elastic.co/beats/filebeat:8.12.0
container_name: filebeat
user: root
volumes:
- ./filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- filebeat_data:/usr/share/filebeat/data
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- KIBANA_HOST=http://kibana:5601
networks:
- app-network
depends_on:
elasticsearch:
condition: service_healthy

metricbeat:
image: docker.elastic.co/beats/metricbeat:8.12.0
container_name: metricbeat
user: root
volumes:
- ./metricbeat.yml:/usr/share/metricbeat/metricbeat.yml:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
- /proc:/hostfs/proc:ro
- /:/hostfs:ro
- metricbeat_data:/usr/share/metricbeat/data
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- KIBANA_HOST=http://kibana:5601
networks:
- app-network
depends_on:
elasticsearch:
condition: service_healthy

volumes:
filebeat_data:
metricbeat_data:
mysql_data:
mongo_data:
elasticsearch_data:

networks:
app-network:
Expand Down
80 changes: 0 additions & 80 deletions docker-compose.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ services:
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
# Elastic 세팅
- ELASTIC_NODE=${ELASTIC_NODE}
- ELASTIC_USERNAME=${ELASTIC_USERNAME}
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}

# Redis 세팅
- REDIS_HOST=${REDIS_HOST}
Expand Down Expand Up @@ -72,82 +68,6 @@ services:
networks:
- app-network

elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
ports:
- "9200:9200"
- "9300:9300"
networks:
- app-network
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9200/_cat/health || exit 1"]
interval: 10s
timeout: 5s
retries: 3

kibana:
image: docker.elastic.co/kibana/kibana:8.12.0
container_name: kibana
depends_on:
elasticsearch:
condition: service_healthy
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- "5601:5601"
networks:
- app-network

filebeat:
image: docker.elastic.co/beats/filebeat:8.12.0
container_name: filebeat
user: root
volumes:
- ./filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- filebeat_data:/usr/share/filebeat/data
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- KIBANA_HOST=http://kibana:5601
networks:
- app-network
depends_on:
elasticsearch:
condition: service_healthy

metricbeat:
image: docker.elastic.co/beats/metricbeat:8.12.0
container_name: metricbeat
user: root
volumes:
- ./metricbeat.yml:/usr/share/metricbeat/metricbeat.yml:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
- /proc:/hostfs/proc:ro
- /:/hostfs:ro
- metricbeat_data:/usr/share/metricbeat/data
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- KIBANA_HOST=http://kibana:5601
networks:
- app-network
depends_on:
elasticsearch:
condition: service_healthy

networks:
app-network:
driver: bridge

volumes:
filebeat_data:
metricbeat_data:
mongo_data:
elasticsearch_data:
24 changes: 0 additions & 24 deletions filebeat.yml

This file was deleted.

45 changes: 0 additions & 45 deletions metricbeat.yml

This file was deleted.

20 changes: 0 additions & 20 deletions packages/backend/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,57 +1,37 @@
# 빌드 스테이지
FROM node:20-alpine AS builder

# 작업 디렉터리 설정
WORKDIR /app

# 필요한 빌드 도구 설치
RUN apk add --no-cache python3 make g++ && npm install -g pnpm

# 루트 레벨의 패키지 파일들 복사
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./

# packages의 package.json 파일들 복사
COPY ./packages/backend ./packages/backend/
COPY ./packages/shared ./packages/shared/

# 의존성 설치 (husky 설치 건너뛰기)
RUN HUSKY=0 pnpm install --no-frozen-lockfile

# 소스 코드 복사
COPY ./packages/backend ./packages/backend
COPY ./packages/shared ./packages/shared
COPY ./tsconfig.json ./

# 백엔드 빌드
RUN cd ./packages/backend && pnpm build

# 프로덕션 스테이지
FROM node:20-alpine AS production

WORKDIR /app

# 필요한 런타임 도구 설치
RUN npm install -g pnpm

# 빌드 스테이지에서 필요한 파일들만 복사
COPY --from=builder /app/package.json /app/pnpm-workspace.yaml ./
COPY --from=builder /app/packages/backend/package.json ./packages/backend/
COPY --from=builder /app/packages/shared/package.json ./packages/shared/

# 프로덕션 의존성만 설치 (husky 설치 건너뛰기)
RUN HUSKY=0 pnpm install --no-frozen-lockfile --prod --ignore-scripts

# 빌드된 백엔드 파일들 복사
COPY --from=builder /app/packages/backend/dist ./packages/backend/dist

# shared 패키지 소스 복사
COPY --from=builder /app/packages/shared ./packages/shared

# 작업 디렉터리를 백엔드로 변경
WORKDIR /app/packages/backend

# 포트 설정
EXPOSE 3000

# 애플리케이션 실행
CMD ["node", "dist/main"]
1 change: 1 addition & 0 deletions packages/backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"@nestjs/platform-express": "^10.0.0",
"@nestjs/platform-socket.io": "^10.4.8",
"@nestjs/platform-ws": "^10.4.8",
"@nestjs/schedule": "^4.1.1",
"@nestjs/swagger": "^8.0.7",
"@nestjs/terminus": "^10.2.3",
"@nestjs/typeorm": "^10.0.2",
Expand Down
22 changes: 0 additions & 22 deletions packages/backend/src/app.controller.spec.ts

This file was deleted.

12 changes: 1 addition & 11 deletions packages/backend/src/app.controller.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,7 @@
import { Body, Controller, Get, Param, Post } from '@nestjs/common';
import { Controller } from '@nestjs/common';
import { AppService } from './app.service';
import { Space } from './schema/space.schema';

@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}

@Post('mongo')
async mongoSaveTest(@Body() createSpaceDto: Partial<Space>) {
return await this.appService.mongoSave(createSpaceDto);
}
@Get('mongo/:id')
async mongoFindTest(@Param('id') id: string) {
return await this.appService.mongoFind(id);
}
}
Loading

0 comments on commit 705fff4

Please sign in to comment.