반응형

Amazon EKS 아키텍처 구성하기 (심리스)

개발 & 운영을 하면서 겪는 문제

  • 운영 배포가 실패했습니다.
    • 내 컴퓨터에서는 되는데?
    • Test / QA에서는 되는데?
    • 왜 운영에서는 장애가 나지?
    • 개발팀과 운영팀 내에서 책임과 회피가 발생한다
      • “너가 코드 바꿈”
      • “Devop가 배포 잘못한거 아님?”
      • 점점 풀수없는 문제들이 심화됨
  • 배포 작업자의 실수로 서버가 날라감 (Terraform destory)
    • 통제불능이 되버림…

그렇다면 운영환경의 실수를 줄이기 위해서는 → GitOps

  • Git Repository를 활용한 방법론
  • Git Repository에서는 어떤 원하는상태의 근거로 사용한다
  • Pull Request로 코드로 관리한다
  • 의도한 상태 + 관찰된 상태 모두 자동화된 형태로 운영한다
  • Git Repository를 활용해서 배포 / 관리를 진행한다
  • Infrastructure as a Code
    • Terraform
    • Cloud Formation
    • CDK

왜 git 이어야 하는가?

  • Git 자체는 기록이 모두 남기 때문에 모든 배포 과정이 graph로 그려진다.
  • PR 자체를 사용하여 배포를 하기때문에 명확하다
  • 배포 장애에 굉장히 신속하고 정확하게 대응이 가능한

GitOps 도구

  • FluxCD
    • EKS Anywhere
    • MSA Operator
    • EventTrigger + Polling
    • Slack 외부 기타 시스템 Alert + Webhook
    • ECR을 쳐다보게 할 수 있음..
    • 개발자가 PR의 대한 자동화를 해줌

Progressive Delivery

  • 지속적인 배포 → CI / CD의 속도를 기반으로 하는 배포 프로세스
  • 정합성을 지속적으로 검사

Argo Rollouts

  • 트래픽 형성기능 활용하여 업데이트 중에 트래픽을 점진적으로 제공
  • 다양한 메트릭을 쿼리를 사용하여 + 롤백유도할수 있는 기능제공
  • Kubernetes CRD를 통하여 A/B 테스트 가능
  • 배포작업이 자동화 → Progressive Delivery

  • 최고의 조합은
    • Istio + Argo Rollouts

정리

  • Giops
    • Git을 활용하여 Operation Practice를 통칭
    • Continouse Deployment를 형상화하는 운영방법론
  • Progressive Delivery
    • Continouse Deployment 진화된 형태
    • 기존 CD + Canary + BlueGreen 등 고급배포 방법론을 제공
    • Flagger
    • Argo Rollouts

 

반응형

+ Recent posts