파이널 프로젝트 - 배포 준비와 고민

mjjin·2023년 10월 13일
0

고민

파이널 프로젝트 배포를 준비하면서 수많은 선택의 기로에 섰다. 세부적인 요소들에 대한 많은 고민이 있었지만, 큰 흐름을 따라가면서 주요한 결정 포인트들을 돌아보면 다음과 같다

1. 아키텍처 선택

Monolithic vs Microservices
고려 사항: 프로젝트 규모, 유지보수, 확장성

구분Monolithic ArchitectureMicroservices Architecture
장점- 개발, 배포 간단
- 초기 구축 속도 빠름
- 통합 테스트 용이
- 확장성 우수
- 독립적 서비스 관리
- 기술 스택 선택의 자유
단점- 확장성 제한
- 시스템 장애 위험성
- 복잡성 증가에 따른 유지보수 어려움
- 통합 테스트 복잡
- 서비스 간 통신 필요
- 배포 및 운영 복잡

2. 서버 운영 환경 결정

호스트 OS에서 직접 실행 vs Docker 컨테이너 내 실행
고려 사항: 환경의 독립성, 장애 격리, 배포 용이성

구분호스트 OS에서 직접 실행Docker 컨테이너 내 실행
장점- 환경 설정 간단
- 컨테이너 오버헤드 없음
- 환경 독립성
- 버전 관리 용이
- 배포의 포터빌리티
단점- OS 변경에 민감
- 다양한 환경 테스트 어려움
- 오버헤드 존재
- 도커 학습 필요

3. 트래픽 관리 방식 선택

Nginx vs AWS ALB (Load Balancer)
고려 사항: 비용, 성능, 확장성, 경험

구분NginxAWS Load Balancer (ALB)
장점- 비용 효율적
- 상세 설정 가능
- 다양한 플러그인 지원
- 자동 확장성
- AWS 통합 서비스 제공
- 높은 가용성
단점- 수동 설정 필요
- 확장성 설정 복잡
- 비용 높음
- 세부 설정 제한

4. Redis 배포 방식 결정

EC2에 직접 설치 vs AWS Elasticache 사용
고려 사항: 관리 부담, 확장성, 비용

구분EC2에 직접 설치AWS Elasticache
장점- 세부 설정 가능
- 비용 효율적
- 관리 용이
- 자동 백업 및 복구 제공
- 확장성
단점- 수동 관리 및 모니터링 필요- 비용 상대적 높음
- 세부 설정 제한

5. CI/CD 파이프라인 구축 방법 선택

EC2에 직접 CI/CD 구축 vs AWS 서비스 사용
고려 사항: 확장성, 관리 부담, 비용, 학습 곡선

구분EC2에 직접 CI/CD 구축AWS 서비스 사용
장점- 세부 설정 및 커스터마이징 가능
- 비용 효율적
- 통합 AWS 서비스 제공
- 자동 확장성 및 높은 가용성
단점- 설정 및 유지보수 복잡
- 확장성 설정 필요
- 비용 상대적 높음
- 세부 설정에 제한

각 선택 포인트마다 여러 방안과 그에 따른 장단점을 고려하면서, 프로젝트의 요구사항과 어떻게 조화를 이룰 수 있을지를 깊게 고민해야 했다.

0개의 댓글