CI : Continuous Integration (지속적인 통합) - 중앙 레포지터리에 올림(개발자의 충돌을 막아줌)
CD : Continuous Deployment (지속적인 배포) - 사용자들의 불편함을 막기위해 개발자들이 도입함 / 자동화가 진행됨
장점 : 자동화 시스템 (Automation) - 테스트 / Incremental Change
CI/CD - 중앙 리포지토리(Repository)
- Github
-> CI/CD를 도입해 프로그램 실행이 가능
-> Local(Local에서 실행됨) & Master branch(Production에서 실행됨)
배포준비 및 배포
● 배포 준비 ; 코드를 병합 (준비과정) , CI/CD덕분에 자동화가 가능함
● 배포
Code Commit
- 파일들을 보관하는 저장 장소 (Repository) - Github과 매우 유사
❏ 코드, 사진, 라이브러리, 등등…- 동시에 많은 사람들이 저장 장소 접근 및 업데이트 가능
- 버전 컨트롤 기능 제공
예) 언제 어떻게 누가 저장 장소 내용을 변경하였는지
레포지터리 생성
ssh는 Root에서 사용할 수 없다 -> IAM에서 새로운 user를 만들고 사용할 수 있음
브랜치 생성 -> 브랜치는 로컬의 복사본이 됨
풀 요청 생성 - 충돌? local의 내용이 branch 수정 후 바뀜
자동 배포(Automated Deployment)
- 새로운 기능들의 빠른 배포
- 소프트웨어 & 서버 다운타임 X
- Manual 에러 X
● Rolling 배포; 현재 production에서 돌아가는 코드에 새로운 기능을 적용하고 싶을때
하나의 ELB로 묶여서 사용(서버의 부하를 줄이는 역할)
-> 이전 버전으로 돌아가는 것은 힘듦(해결?Blue/Green 배포방식)
-> 그러나 맨 처음 배포를 할때는 Rolling배포를 사용해야함
● Blue/Green 배포; blue-현재 production / green-새로운 production
역할 우선 만들기
IAM에서 사용자 생성
->CI/CD의 끝판왕
- 빌드 테스트 배포 과정을 관리
○ 코드 변경시 은 이를 감지할 수 있음- 소프트웨어 및 어플리케이션 출시 자동화 가능
○ 빠르고 쉬운 디버깅을 가능케 해줌
배포(Deployment) vs 출시(Release)
배포를 거쳐 출시를 하게되는것
Code Pipeline 작동 방법
느낀점 - 팀 프로젝트를 할때 git에서 팀원들과 함께 플젝을 진행한 경험이 있었는데 그게 CI와 CD덕분 이라는 점을 새롭게 알게 되었다. 기술적인 측면에서의 github의 기술을 알 수 있어 유익했다.
aws강의를 모두 끝마쳤다. 원래 알고 있던 내용을 aws측면에서 알 수 있어서 의미가 있었다. 다만 아직까지도 이해가 어려운 부분이 존재해 강의를 계속 반복하고 실습도 여러번 반복해야겠다는 생각을 하게 되었다. 더 많은 공부를 해서 응용된 학습을 하고싶다.