= Continuous Integration 지속적 통합
: 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 소스 레포지토리에 통합되는 것
→ 빌드 / 테스트 자동화 과정
CI를 성공적으로 구현할 경우, 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합되므로 여러 명의 개발자가 동시에 어플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있음
이전에는 팀의 개발자가 장기간 격리된 상태로 작업하고, 작업이 완료된 후에야 변경 사항을 마스터 브랜치에 병합 → 병합 코드가 어렵고 시간 소모적, 수정 없이 오랫동안 버그가 축적됨
다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경
형상관리: 소프트웨어 개발 프로세스 각 단계에서 소프트웨어 변경 사항을 체계적으로 추적하고 관리
형상관리 툴로는 Git, SVN 등이 있음
지속적으로 서비스해야 하는 어플리케이션이나 현재 개발 중인 어플리케이션에서, 기능을 추가할 때마다 commit 등을 날려 레포지토리에 버전 업데이트
→ 기능별로 빌드/테스트/병합(Merge)을 자동화해 원천 소스코드의 충돌 등을 방어
MSA(Micro Service Archietecture) 환경
MSA: 작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태. 대부분 Agile 방법론이 적용되기 때문에, 기능 추가가 빈번하게 발생, 긴밀한 동작 테스트의 중요성
Agile 방법론: 작업 계획을 짧은 단위로 세우고 제품을 만들고 고쳐나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론
→ CI의 적용으로 기능 충돌 방지 등의 Benefit 제공
= Continuous Delivery 지속적 전달
: 개발자의 변경사항이 레포지토리를 넘어 고객의 프로덕션 환경까지 릴리즈되는 것
CD는 Continous Delivery와 Continuous Deployment 두 용어 모두의 축약어이다!
=Development Operations
: 소프트웨어 개발과 운영을 통합하여 효율성, 협력, 속도, 안정성을 개선하는 개발 및 운영 방법론
기존의 소프트웨어 개발 및 인프라 관리 프로세스를 사용하는 조직보다 제품을 더 빠르게 혁신하고 개선할 수 있음
프로젝트 세팅 및 배포 관련 코드 작성
Django를 이용한 프로젝트 세팅을 github에 포크
AWS EC2 인스턴스 생성
저장한 위치 기억!