시스템 구상

dev_qorh·2022년 7월 14일
1

CatchCatch

목록 보기
1/18

주저리주저리

이번 프로젝트의 가장 큰 목적은 기술 스택의 사용 의미를 명확히 하는 것 + 운영 경험을 갖는 것에 초점을 맞추고 있다. 또한, 바닥부터 진행하는 프로젝트이기 때문에 최대한의 문서화 + 다양한 선택지에 대한 이유와 결과 분석을 포함해야 할 것이다.

프로젝트의 전반적인 흐름은 프로젝트 설계 에서 모든 인원이 거의 참여하는 수준에서 진행되어야 한다. 명시된 순서에 맞게 전체적인 내용을 진행하고, 본 페이지에서는 내가 백엔드로 개발하는데 있는 모든 내용들을 포함하고자 한다.

이상하게 서론이 긴 것은 이 글이 블로그 글에 통합될 내용이기도 하고, 개인적인 내용을 포함하고 있기 때문에 사색하는 것에 부담이 없어서 그렇기 때문이다..

시스템 구성에 가장 먼저 해야하는 것

일단 기술 스택은 Nginx + TypeScript + NodeJS 로 정했다. 스프링과 같은 의존성 주입, 제어 역전 등의 기술을 활용해볼 것이고, 데이터베이스 선정 및 샤딩 등을 진행해야 한다. 관련 사항을 나열해보자면,,

  • CDN 설정 확인하기
  • LB / MQ 적용 알아보기 - auto scaling까지
  • Docker 환경 세팅하기
  • 데이터베이스 선정 후, 샤딩까지
  • 클라우드 서비스 도입 여부 확인
  • 비용 계산하기
  • Node + TypeScript + Nginx 적용 백엔드 만들기
    • DI / IOC 적용하여 시스템 세팅 - typedi, typeorm
    • Nginx 및 Docker를 결합한 LB 확인..
  • CI / CD 설정을 위한 Jenkins 도입

우선 오늘 해야하는 일은 위 항목의 순서를 정하는 것이다. 합리적이고 타당한 이유를 들어 순서를 선정해야 할 것이다. 가령, 클라우드 서비스 도입은 백엔드 시스템을 만들고 나서 적용할 수도 있는 순서가 되는 것이다.

프로젝트의 지속의 측면에서 가장 먼저 생각해보자면, CI/CD 가 필요하다고 생각했다. 조금의 검색 결과 CI는 개발자 측면에서의 자동 빌드, 단위 테스트 관련을 위해 필요하여 CD는 배포 전 광범위 베타 테스트 등에 필요하다고 한다. 둘의 범위가 명확히 다른 것을 인지하였다.

그렇다면, 프로젝트를 먼저 만들고 해당 프로젝트의 환경을 도커 서비스에서 실행할 수 있도록 한 다음, Jenkins를 통한 구성원의 개발이 적극적으로 반영되는 것을 관리 감독할 수 있도록 하는 것이 타당할 것이다. 즉,

  1. Node + TypeScript + Nginx 적용 백엔드 만들기
  2. 데이터베이스 선정
  3. Docker 환경 세팅하기
  4. CI / CD 설정을 위한 Jenkins 도입

CDN 에 대해서는 프로젝트 중간중간에 알아볼 필요가 있을 것 같다. (파일 관련 작업을 할 시점에) 마찬가지로 LB / MQ 도 API 포인트를 만들고 테스팅을 하면서 적용 가능성을 확인하면 좋을 듯 하다.

  1. CDN 설정 확인하기
  2. LB / MQ 적용 알아보기 - auto scaling까지
  3. 데이터베이스 샤딩

그리고 나서 샤딩을 적용하는 것이 좋을 듯하다. 혹은 필요성이 제고되기 전까지 미뤄둬도 괜찮을 듯하다. 트래픽 분산 처리를 적용할 시점에 같이 알아보는 것이 효과적일 듯 하다.

  1. 비용 계산하기
  2. 클라우드 서비스 도입 여부 확인

완성된 프로젝트을 모니터링할 수 있도록 간단한 설정을 진행한 후 트래픽을 발생시키고 그에 대한 비용을 산출해보기로 한다. 그에 따른 클라우드 서비스 도입 여부도 동시에 판단할 수 있을 것이다.

프로젝트 진행 일반

나머지는 구성원과의 정기 회의 시간에 진행되는 순서를 따라가면 될 것이다. 맡은 역할에 최선을 다하는 것으로 충분할 듯 싶다.

profile
기술로써 가치를 만들고 싶은 사람입니다.

0개의 댓글