DevOps와 CI/CD의 이해
😎 Waterfall vs Agile vs DevOps
🚩 Cloud Native Architecture
: 클라우드 네이티브 아키텍처 및 기술은 클라우드에서 빌드되고 클라우드 컴퓨팅 모델을 최대한 활용하는 워크로드를 디자인, 생성 및 운영하는 접근 방식이다.
Cloud Native Application : Cloud Native Architecture에 의해 설계되고 구현, 밑의 네가지 특징이 있음
- CI / CD
- DevOps
- Microservices
- Containers
✔ Cloud Native - MSA (Microservice Architecture)
Inner Architecture (서비스 개발) 과 Outer Architecture (운영) 로 구분
✔ Cloud Native - Containerization
✔ Cloud Native - DevOps (Development + Operations)
: 엔지니어가 프로그래밍하고, 빌드하고, 직접 시스템을 배포한다. 사용자와 끊임없이 Interaction 하면서 서비스를 개선해나가는 일련의 과정을 말한다.
- 인프라로 코드 관리
- 애자일 인프라 스트럭쳐
- 애자일 시스템 관리 운동
- 지속적인 통합 및 배포 운동 → CI, CD
PLAN / CODE : Git, SVN, JIRA
BUILD : Maven, Gradle
TEST : Selenium, JUnit
REALEASE(Integration) : Jenkins
DEPLOY : Docker, AWS
OPERATE : Ansible, Terraform, Kubernates
MONITOR : Nagios, Fluentd
✔ Cloud Native - CI / CD
- CI (Continuous Integration) : Build → Test → Package 과정
- CD (Continuous Delivery(수동) / Continuous Deployment (자동))
<프로젝트 CI / CD Flow>
git → Jenkins (CI/CD 자동화 파이프라인 처리) → Gradle (빌드) → Ansible (서버를 Script로 관리(IaC)) → Docker (빌드된 결과 배포) → Kubernates (도커 배포 관리, 스케줄링 관리)
위 처럼 구축한 인프라를 클라우드 환경( AWS )으로 옮겨 운영해볼 예정이다.