본문 바로가기
devops

[책 리뷰] 배워서 바로 쓰는 14가지 AWS 구축 패턴

by marble25 2022. 4. 13.

디자인 패턴에 대한 고민이 있던 차에, 추천을 받고 코드 레벨의 디자인 패턴이 아닌, 인프라 레벨의 디자인 패턴에 대한 책 추천을 받아서 읽어보게 되었다.

 

이 책은 실제로 사용될 법한 인프라 패턴을 제시하고, 그 패턴을 위해 어떤 AWS 서비스를 사용해야 하는지 병렬적으로 구성되어 있다. 

이 책을 읽으면서 얻은 지식은 많지만, 간단히 정리해 보자면 다음과 같다. 

 

  • 리전 별로 속도가 다르기 때문에 서비스 하는 지역 근처 리전을 선택해야 한다. 
  • AMI를 이용하면, 동일한 EC2를 같은 이미지로 여러 개 만들 수 있다. 오토 스케일링까지 고려한다면, ECS를 사용해 보자. 
  • RDS를 이용하면, DB 서버를 Active-Standby 구성으로 쉽게 다중화할 수 있다. 
  • 데이터 액세스 속도가 중요하다면, 크기가 작으면서 자주 사용되는 데이터는 Elastic Cache같은 인메모리 캐시에 저장하는 방식을 사용해 보자. 
  • 데이터베이스는 한 개의 프라이머리와 여러 개의 읽기 전용 복제본(read replica)로 구성된다.
  • 데이터 참조나 업데이트 시에 MySQL은 갱신되는 행에 대한 일관성 유지를 위해 잠금이 발생한다. 
  • RDS for Aurora 의 경우 프라이므리와 읽기 전용 복제본은 공유 저장소를 사용해서 실제 데이터는 공유 저장소에서 받기 때문에 잠금으로 인한 대기가 비교적 적게 발생한다. 
  • 가용성을 높이는 가장 기본적인 방침은 2개 이상의 AZ에 배치하는 것이다. 이때, 자동으로 전환하는 방식은 비용은 많이 들지만 서버가 이미 가동중이기 때문에 복구하는데 짧은 시간이 들고, 백업 서버 만들기 방식은 비용은 적게 들지만 서버를 가동해야 하기 때문에 복구하는데 오랜 시간이 걸린다. 
  • S3를 사용한다면 간편하고 저렴하며, 파일 손실에 대한 걱정 없이 저장할 수 있지만, REST API를 사용하기 때문에 속도가 느리고, 파일 업데이트 직후에 참조를 하면 업데이트 이전의 데이터가 반환될 수 있다. 
  • 계층형 스토리지 방식을 사용하면, 캐시 + 업로드 버퍼 + S3의 구성으로 응답 속도와 용량을 모두 잡을 수 있다.

  • Column-based DB는 데이터 분석에 자주 사용된다. 이를 위해 기본 데이터는 Row-based DB의 MySQL 등을 사용하고, 필요한 테이블만 Column-based DB에 전송하면 좋다. 이때, AWS에서는 플라이데이터 싱크를 통해 자동으로 데이터 동기화를 처리할 수 있다. 

  • 하둡은 구조화되지 않은 데이터(ex: 로그 데이터)를 가공하기에 적절하다. 이때, 로그는 각 EC2 등의 인스턴스에서 Fluentd나 Logstash 등을 이용해 수집할 수 있다. 
  • AWS의 코드 파이프라인과 코드 디플로이를 사용한다면 비교적 쉽게 CI/CD를 구축할 수 있다. dev 환경과 prod 환경은 필수로 구분하고, CI/CD를 자동화하도록 하자.

  • 디바이스 팜을 이용한다면 실제 모바일 기기 없이도 다양한 테스트를 진행할 수 있다. 
  • 클라우드 포메이션 서비스를 사용하면 같은 템플릿으로 다양한 서비스를 빠르게 구축할 수 있다.
  • 람다는 서버 없이도 REST API 호출에 대응할 수 있다. 이때, 람다는 단시간에 끝나는 가벼운 작업을 많이 수행하는 경우에 적합하고, 빠른 응답속도가 필요한 경우에는 적합하지 않다. 또한, 데이터가 영속적으로 유지되지 않는다. 
  • 일반적인 상황에서는 온프레미스로 운영하다가도 피크 부하에 달하면 온프레미스의 로드밸런서에서 웹 요청 부하를 AWS로 오프로드할 수 있다. 이때, 온프레미스와 AWS를 연결하기 위해 다이렉트 커넥트가 사용될 수 있다. 
  • 클라우드워치 서비스를 이용해서 AWS의 모든 서비스를 모니터링할 수 있다. CPU 사용률 등 다양한 조건에 따라 EC2 인스턴스를 추가하는 등의 액션을 취할 수 있고, 이를 통해 스케일 인/아웃을 달성할 수 있다.

 

비교적 얇은 두께의 책이지만, 자주 사용하는 AWS 패턴에 대해 소개하면서도, 인프라에 대한 고민이 묻어 나와서 도움이 많이 되었던 것 같다. 두께 때문에 쉽게 볼 수도 있지만, 곱씹어볼 부분이 많고 인프라 구축할 때 참고해봄직한 책인 것 같다. 

'devops' 카테고리의 다른 글

AWS Cloudformation  (0) 2023.12.09
[TIL] Grafana License  (1) 2023.11.19
[TIL] 소프트웨어 버전 체계  (0) 2023.11.06
temporal 사용 후기  (0) 2022.07.24