파이널 프로젝트 배포를 준비하면서 수많은 선택의 기로에 섰다. 세부적인 요소들에 대한 많은 고민이 있었지만, 큰 흐름을 따라가면서 주요한 결정 포인트들을 돌아보면 다음과 같다
Monolithic vs Microservices
고려 사항: 프로젝트 규모, 유지보수, 확장성
구분 | Monolithic Architecture | Microservices Architecture |
---|---|---|
장점 | - 개발, 배포 간단 - 초기 구축 속도 빠름 - 통합 테스트 용이 | - 확장성 우수 - 독립적 서비스 관리 - 기술 스택 선택의 자유 |
단점 | - 확장성 제한 - 시스템 장애 위험성 - 복잡성 증가에 따른 유지보수 어려움 | - 통합 테스트 복잡 - 서비스 간 통신 필요 - 배포 및 운영 복잡 |
호스트 OS에서 직접 실행 vs Docker 컨테이너 내 실행
고려 사항: 환경의 독립성, 장애 격리, 배포 용이성
구분 | 호스트 OS에서 직접 실행 | Docker 컨테이너 내 실행 |
---|---|---|
장점 | - 환경 설정 간단 - 컨테이너 오버헤드 없음 | - 환경 독립성 - 버전 관리 용이 - 배포의 포터빌리티 |
단점 | - OS 변경에 민감 - 다양한 환경 테스트 어려움 | - 오버헤드 존재 - 도커 학습 필요 |
Nginx vs AWS ALB (Load Balancer)
고려 사항: 비용, 성능, 확장성, 경험
구분 | Nginx | AWS Load Balancer (ALB) |
---|---|---|
장점 | - 비용 효율적 - 상세 설정 가능 - 다양한 플러그인 지원 | - 자동 확장성 - AWS 통합 서비스 제공 - 높은 가용성 |
단점 | - 수동 설정 필요 - 확장성 설정 복잡 | - 비용 높음 - 세부 설정 제한 |
EC2에 직접 설치 vs AWS Elasticache 사용
고려 사항: 관리 부담, 확장성, 비용
구분 | EC2에 직접 설치 | AWS Elasticache |
---|---|---|
장점 | - 세부 설정 가능 - 비용 효율적 | - 관리 용이 - 자동 백업 및 복구 제공 - 확장성 |
단점 | - 수동 관리 및 모니터링 필요 | - 비용 상대적 높음 - 세부 설정 제한 |
EC2에 직접 CI/CD 구축 vs AWS 서비스 사용
고려 사항: 확장성, 관리 부담, 비용, 학습 곡선
구분 | EC2에 직접 CI/CD 구축 | AWS 서비스 사용 |
---|---|---|
장점 | - 세부 설정 및 커스터마이징 가능 - 비용 효율적 | - 통합 AWS 서비스 제공 - 자동 확장성 및 높은 가용성 |
단점 | - 설정 및 유지보수 복잡 - 확장성 설정 필요 | - 비용 상대적 높음 - 세부 설정에 제한 |
각 선택 포인트마다 여러 방안과 그에 따른 장단점을 고려하면서, 프로젝트의 요구사항과 어떻게 조화를 이룰 수 있을지를 깊게 고민해야 했다.