11. QA 환경
그럼 기존에는…?
• 프로그래머가 QA 해야 할 서비스를 자기의 머신 위에서 실행
• 의존하는 서비스가 있으면 다 같이 띄워야 함
• 프로그래머의 각자의 머신 상태에 따라서 QA 환경이 들쭉날쭉…
• “쿠폰 사용 기능이 작동을 안 하는데 이번 변경사항 버그인가요?”
• “아 제가 쿠폰 서비스를 안 띄웠네요 잠시만요…”
12. QA 환경의 목표
• 실섭과 동일한 환경이어야 한다!
• 모든 필요한 서비스, 자원 (예: AWS SQS)이 있고
• 서비스 간 통신 방식 등이 실섭과 동일하고
• 빠르게 배포하고 수정할 수 있어야한다!
• QA 준비에 걸리는 시간 단축
• 실섭과 분리되어 있어야한다!
13. 실섭과 동일한 환경
• 현재 실섭은 손으로 구성된 ECS
• 동일한 클러스터를 새로 띄우는 것은 매우 힘듦
• 아예 새로운 클러스터를 구축하고 실섭을 바꾸자
Kubernetes + Terraform
14. Kubernetes + Terraform
왜 쿠버네티스인가?
• 선언적으로 구축할 수 있다
• kubectl 등 CLI를 통해 자동화하기 쉽다
• kubectl 등 CLI를 통해 관리하기 편하다
• 오픈소스
• 사용자가 많아 사용 경험도 풍부하고 어느정도 검증되었다
15. Kubernetes + Terraform
왜 테라폼인가?
• 역시 선언적으로 관리할 수 있다
• 역시 사용 경험이 풍부하다
• AWS 이외에 다른 자원도 한꺼번에 관리할 수 있다
24. alb-ingress-controller
• AWS ALB를 쿠버네티스 인그레스로 사용
• ALB에서 각 팟의 아이피로 직접 라우팅해주거나 (ip type)
• ALB에서 노드로 라우팅 후 노드 안에서 kube-proxy가
라우팅하게 할 수 있다 (instance type)
25. Prometheus
지표 수집
• 팟의 CPU, 메모리 사용량 등을 수집
• CloudWatch Adapter를 통해 인그레스의 요청량도 수집
• prometheus-operator를 통해 셋업
• https://github.com/prometheus-operator/prometheus-operator
27. Cluster Autoscaler
• 노드의 사용량에 맞춰서
• 새 노드를 추가하거나
• 필요 없는 노드를 종료
• AWS EKS를 사용한다면 엄청나게 쉽게 세팅 가능
• https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler
28. Horizontal Pod Autoscaler
• 팟의 지표에 따라서
• 새 팟을 띄우거나
• 필요 없는 팟을 종료
• 쿠버네티스에 내장된 metrics server나 prometheus 등의 지표
수집기가 필요
29. AWS Fargate
서버리스 컴퓨팅 엔진
• AWS EKS에서는 EC2 인스턴스 뿐만이 아니라 파게이트도 노드로
사용할 수 있다
• 사용한 만큼 청구되어 경제적
• 한 팟이 하나의 노드에만 할당되므로 노드의 장애가 여러 서비스의
장애로 이어지지 않는다
• 스포카에서는 선택적으로 사용 중
30. Helm
쿠버네티스 패키지 매니저
• 쿠버네티스의 여러 리소스를 묶어서 관리할 수 있는 툴
• 차트 버전 관리 등을 통해 형상관리도 가능
• 스포카에서는 빠른 배포를 위한 템플릿 엔진과
• 배포 기록 관리 및 롤백을 위해서만 사용 중