클라우드 아키텍쳐 + 배포 전략

dasd412·2023년 12월 30일
0

cotella

목록 보기
6/9

클라우드 아키텍쳐

설명

위 이미지에서 ()으로 싸인것은, 대응되는 AWS 구성요소 입니다.

웹 서버 다중화

Logging Analytics(Cloud watch)가 Compute(EC2) 상태를 감시하다가 트래픽이 몰리면, 오토 스케일링을 실시합니다. 그리고 LoadBalancing(ALB)를 활용해 부하를 분산합니다.

DB 서버 다중화

Active Standby 구성을 활용해서 DB 서버를 다중화하려 합니다.

특히, 가용 영역마다 DB를 배치하고 마스터 DB 데이터를 스탠바이 DB에 동기화하는 구성을 선택했습니다.
이렇게 하면 마스터 DB에 장애가 발생할 경우, 스탠바이가 마스터로 승격되기 때문에 서비스 가용성을 높일 수 있을 겁니다.

Active - Standby vs Active - Active

액티브 - 스탠바이는 하나는 작동중이고, 다른 하나는 비활성 대기 상태입니다.
액티브 시스템에 문제가 발생할 경우, 스탠바이 시스템이 서비스를 이어받습니다.

반면 액티브 - 액티브는 두 서버 모두 활성화되있어서 다른 쪽이 실패하더라도 계속 서비스를 제공할 수 있어 액티브 - 스탠바이보다 가용성이 높습니다. 하지만 돈이 많이 듭니다.

기업 프로젝트의 경우 액티브 - 액티브가 적절하겠지만, 개인 소규모 프로젝트이므로 액티브 - 스탠바이가 비용이 싸면서도 충분히 가용성을 제공할 수 있다고 판단했습니다.

참고 자료

https://steven-life-1991.tistory.com/168#google_vignette

비용 계산

위 이미지에서 진한 검은색은 참고 자료에서 무료로 확정된 서비스입니다. 반면 진한 빨간색은 비용 조사가 필요한 서비스입니다.

조사 내용 (무료)

1.Oracle Autonomous Transaction Processing 데이터 베이스 2개까지 무료
2. VCN (VPN) 최대 2개까지 무료
3. 인증서 5개까지 무료
4. 로깅 10GB까지 무료
5. 모니터링 시간당 1000건까지 무료
6. 오브젝트 스토리지 10GB까지 무료
7. 로드 밸런서 1개까지 무료

등등

조사 내용 (유료)

  1. DNS 또는 Traffic Managment(Route 53) 1,000,000 쿼리당 약 1000원
  2. 시간 당 Redis Memory Gigabyte 기준 17원

기타 사항

AWS Cloudfront에 대응되는 서비스가 OCI에는 없는 것 같습니다. 프론트엔드 개발할 때 조사가 필요할 것 같네요.

참고 자료

http://taewan.kim/cloud/oci-vs-aws/
https://www.oracle.com/cloud/service-comparison/


배포 전략

롤링 vs 블루/그린 vs 카나리

롤링은 클러스터 일부를 업데이트해서 점진적으로 새 버전으로 전환하는 방식이고, 블루 / 그린은 두 개의 환경을 사용해서 환경 A에는 새 버전을 배포하고, 환경 B에는 현재 버전을 유지하는 방식입니다.
카나리는 새 버전을 소수의 사용자에게만 처음 배포하여 반응을 관찰한다음에 점차적으로 모든 사용자에게 확장하는 방식입니다.

결론적으로 운영 비용이 싼 롤링 배포를 선택했습니다.
블루 / 그린은 두 개의 동일한 환경이 필요하므로 더 비쌉니다... 개인 소규모 프로젝트에는 무리가 있습니다.
카나리의 경우엔 A/B 테스트 용도에 쓰이긴 적합하지만, 현 상황에서는 그럴 필요가 딱히 없습니다.

CI/CD 파이프라인

설명

  1. GitHub에 PR이 발생합니다.
  2. Jacoco로 테스트 코드 커버리지를 측정합니다.
  3. GitHub Actions로 Oracle cloud에 배포합니다.
  4. 배포할 때, 도커를 활용하여 배포합니다.

참고 자료

https://hudi.blog/zero-downtime-deployment/


profile
시스템 아키텍쳐 설계에 관심이 많은 백엔드 개발자입니다. (Go/Python/MSA/graphql/Spring)

0개의 댓글