CI/CD(Continuous Integration/Continuous Delivery)?
애플리케이션 개발 단계부터 배포까지 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법
CI
빌드/테스트 자동화 과정, "지속적인 통합"을 의미
- 애플리케이션의 버그 수정이나 새로운 코드 변경이 정기적으로 빌드 및 테스트되면서 공유되는 레파지토리에 통합되는 것을 의미한다.
- 모든 사람에게 동일 작업 기반을 제공한다
- 커밋할때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장한다
- 코드 변경사항을 주기적으로 빈번하게 merge한다
- 가능한 작은 단위로 나누어 주기적으로 빈번히 개발하고 계속해서 통합해 나가는 것이 중요
- 통합 단계의 자동화
- 매번 코드치고, 형상관리 시스템(github)에 코드 올리고 빌드하고 테스트하고 귀찮은 일.
이 일을 자동화 할 수 있다
장점
- 코드의 검증에 들어가는 시간이 줄어든다
- 개발 편의성이 증가한다
- 항상 테스트 코드를 통과한 코드만이 레포지토리에 올라가기 때문에, 좋은 코드 퀄리티를 유지할 수 있다.
CD
배포 자동화 과정, 지속적인 서비스 제공 및 지속적인 배포
- 코드변경이 파이프라인의 이전단계를 모두 성공적으로 통화하면 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포된다.
- 지속적 배포를 채택하면 품질저하없이 새로운 기능을 사용자에게 빨리 제공할 수 있다.
CD적용 흐름
CI를 적용하여 코드 검증 > 배포 환경과 비슷한 곳에서 검증 진행 > 검증된 소프트웨어를 실제 프로덕션 환경으로 배포
장점
- 개발자가 배포보다는 개발에 더욱 신경 쓸 수 있도록 도와준다.
- 개발자가 원클릭으로 수작업 없이 빌드,테스트,배포까지의 자동화를 할 수 있다.
CI/CD 종류
- Jenkins
- CircleCI
- TravisCI
- Github Actions
- etc
CI/CD를 적용 후의 과정
- 개발자들이 개발하여 feature브랜치에 코드를 push한다.
- git push를 통해 Trigger되어 CI서버에서 알아서 Build, Test, Lint를 실행하고 결과를 전송한다.
- 개발자들은 결과를 전송받고 에러가 난 부분이 있다면 에러부분을 수정하고 코드를 master 브랜치에 merge한다.
- master 브랜치에 코드를 merge하고 Build, Test가 정상적으로 수행이 되었다면 CI서버에서 알아서 Deploy 과정을 수행한다.
CDN (Content Delivery Network)?
지리적으로 분산된 서버들을 연결한 네트워크

- 웹 컨텐츠의 복사본을 사용자에 가까운 곳에 두거나 동적 컨텐츠의 전달을 활성화하여 웹 성능 및 속도를 향상할 수 있게한다.
CDN이 중요한 이유
- CDN의 주 목적은 대기시간을 줄이거나 네트워크 설계로 인해 발생하는 통신 지연을 줄이는것이다.
- 서버와 사용자 간의 통신 트래픽은 아무 먼 물리적인 이동을해야하는데, CND은 클라이언트 - 웹 사이트 서버 중간에 서버를 두어 효율성을 높인다.
- 웹서버에 대한 트래픽을 줄이고, 대역폭 소비를줄여 애플리케이션의 사용자 환경을 개선한다.
CDN사용시 이점
- 페이지 로드 시간 단축
가까운 CDN 서버에서 콘텐츠를 전송해주기 때문에 페이지 로드 시간을 단축 할 수 있다.
- 대역폭 비용 절감
CDN은 캐싱 및 기타 최적화를 통해 Origin 서버가 제공해야하는 데이터의 양을 줄여 웹 사이트 소유자의 호스팅 비용을 절감할 수 있다.
- 콘텐츠 가용성 제고
CDN 서비스는 대용량 트래픽을 처리하고 웹 서버의 부하를 줄일 수 있다.
- 웹 사이트 보안강화
DDoS 공격과 같은 가짜 트래픽을 여러 중간 서버 간에 분산하여 Origin 서버에 미치는 영향을 줄일 수 있다.
동작방식
- 여러 지리적 위치에 접속 지점(POP) 또는 CDN 엣지 서버 그룹을 설정하는 방식으로 작동한다
- 지리적으로 분산된 네트워크는 캐싱, 동적 가속 및 엣지 계산의 원리를 기반으로 작동한다
캐싱
- 더 빠른 데이터 접근을 위해 동일한 데이터의 여러 복사본을 저장하는 프로세스
- 네트워크의 여러 서버에 정적 웹사이트 콘텐츠를 저장하는 프로세를 의미
캐싱 동작 과정
- 지리적으로 멀리 떨어진 웹사이트 방문자가 사이트에 정적 웹 콘텐츠 요청
- 요청이 웹 애플리케이션 서버 또는 origin 서버에 도달
- origin 서버는 원격 방문자에게 응답을 보낸다.또한 해당 방문자와 지리적으로 가까운 CDN POP에 응답 복사본을 보낸다
- CDN POP 서버는 복사본을 캐싱된 파일로 저장한다
- 다음에 해당 방문자 또는 해당 위치에 있는 다른 방문자가 동일한 요청을 하면, origin 서버가 아닌 캐싱 서버가 응답을 보냄
동적 가속
- 웹 애플리캐이션과 클라이언트 사이의 중개 CDN서버로 인해 발생하는 동적 웹 콘텐츠 요청에 대한 서버 응답 시간을 단축하는 것.
- 사용자가 요청이 있을 때마다 콘텐츠가 변경될 수 있기 떄문에 동적 웹 콘텐츠에서는 캐싱이 제대로 동작하지 않는다.
- CDN 서버는 모든 동적 요청에 대해 origin 서버와 다시 연결해야 하지만 자신과 origin 서버 간의 연결을 최적화하여 프로세스를 가속화 한다.
엣지 로직 계산
- 클라이언트와 서버간의 통신을 단순화하는 논리적 계산을 수행하도록 CDN 엣지 서버를 프로그래밍할 수 있다.
- 사용자 요청을 검사하고 캐싱 동작을 수정한다.
- 잘못된 사용자 요청을 확인하고 처리한다
- 응답하기 전에 콘텐츠를 수정하거나 최적화한다