| | Server (On-Premise) | Instance (Clound) | Container | | --- | --- | --- | --- | | 관리 | 애지중지 | 필요할 때 사용 / 필요 없는 경우 제거 | 필요할 때 사용 / 필요 없는 경우 제거 | | 장비도입 | 2주 ~ 3개월 | 3 ~ 5분 | 10초 이내 | | 개발 방식 | - Monolitic 주력
MSA 가 가능하지만 복잡 | - Monolitic 주력
MSA 가 가능하지만 복잡 | MSA 최적화 | | 배포 자동화 | CI/CD(Jenkins, Git) | CI/CD(CodeCommit, Code Pipeline) | GitOps(CodeCommit, Flux) | | 모니터링(지표,로그,추적) | Route, Switch, Hub | CloudWatch | Promethus, Grafana, Fluentd, Fluend Bit, Cloudwatch Container Insight, Xray | | 모니터링(지표,로그,추적) | Route, Switch, Hub | VPC | Promethus, Grafana, Fluentd, Fluend Bit, Cloudwatch Container Insight, Xray | | Security(인증/인가) | Window AD, 자체개발 | IAM | 인증: IAM 인가: RBAC |
서버(물리 개념) Vs 인스턴스(서비스)
On-Premise Vs Cloud
Monolitic Vs MSA
Monolitics
: 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 형태MSA
: 아키텍처는 하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 형태AWS 의 CI/CD
Code Commit
: AWS에서 호스팅하는 Git 기반의 완전관리형 소스 제어 서비스 (버전 제어 서비스)
Code Build
: 애플리케이션 코드를 빌드하기 위한 지속적 통합 서비스
Code Deploy
: Amazon EC2, AWS Lambda 및 온프레미스 인스턴스 같은 다양한 컴퓨팅 서비스에 대한 소프트웨어 배포를 자동화하는 완전관리형 배포 서비스
Code Pipeline
: 소프트웨어 배포에 필요한 단계를 모델링, 시각화 및 자동화하는 데 사용할 수 있는 완전관리형 지속적 전달 서비스
GitOps
는 애플리케이션의 배포와 운영에 관련된 모든 요소들을 Git에서 관리(Operation) 하는 것
Kubernetes Manifest 파일을 Git에서 관리하고, 배포할때에도 Git에 저장된 Manifest로 클러스터에 배포
GitOps 원칙
선언적(declarative) : 명령들의 집합이 아닌, 사실(fact)들의 집합으로 구성되어 있음
GitOps에서 배포는 선언형으로 정의되어야 한다. (사용자가 배포의 원하는 상태를 선언적으로 정의)
GitOps는 선언형으로 배포 방식을 정의한다.
배포 작업 정의서가 선언형으로 되어 있으면,
GitOps Repository : GitOps Pipeline 을 설계할 때에는, Git Repository 를 최소 두 개 이상
사용 권장
App Repository
: App 소스 코드와 배포를 위한 Manifest 파일배포 환경 구성용 Repository
: 배포 환경에 대한 모든 Manifest (모니터링, 서비스, Message Queue 등) 가 어떤 버전으로, 어떻게 구성되어 있는지를 포함GitOps 배포 전략
Push Type
: Git Repo 가 변경되었을 때 파이프라인을 실행시키는 구조
Pull Type
: 배포하려는 클러스터에 위치한 별도의 오퍼레이터가 배포역할을 대신함
해당 오퍼레이터는 Git Repo 의 Manifest 와 배포 환경을 지속적으로 비교하다가
→ 차이가 발생할 경우
→ Git Repo 의 Manifest 를 기준으로 클러스터를 유지시켜 줌
Push Type 과 달리 오퍼레이터가 App 과 동일한 환경에서 동작중 → 보안 정보가 외부에 노출되지 않고 실행할 수 있음
GitOps 구현 소프트웨어 종류
Flux
: GitOps를 실제 구현한 오픈소스
오케스트레이션 Tool 로서
등이 있고, Open Source 인 Kubernetes 가 선두를 차지하게 됨
Kubernetes 를 가져와 각 회사에 따라 Customize 한 것