삐옹

CI / CD는 왜 하는걸까 본문

Git & Github

CI / CD는 왜 하는걸까

삐옹 2022. 7. 17. 12:34

뒤도 안돌아보고 프로젝트를 진행한지 어언 3주차.. 

시간에 비해 한건 많이 없는 것 같지만

이쯤되니 생각났다.

언제까지 http:localhost:3000을 보고만 있어야할까. 

야레야레..

나 말야.. 이런거 지긋지긋 하.다.고 .

당연한 말이지만 localhost에서만 작동하는 서비스는 서비스로서 전혀 의미가 없다.

솔직히 배포하면 CI / CD 를 또 하라는데 난 그게 뭐고 왜 해야하는지도 잘 모른다.

알아보는 김에 S3로 배포하는 이유도 정확히 알아볼까한다.

정말 가벼운 마음으로 

S3, CI/CD, CI/CD를 도와주는 툴들, Github actions

에 관해 정리해본다!


S3

Simple Static Storage. 웹사이트를 배포할 경우 기반이 되는 HTML파일- 거의 예외없이 index.html 파일 - 같은 정적 리소스를 올리면 배포해주는 아마존의 간편 배포 서비스. 누군가 ec2는? 왜 굳이 s3를 쓰는데? 라고 묻는다면 프론트앤드의 정적리소스를 배포 하는 경우엔 s3정도면 충분하기 때문이라고 대답해주면 된다. ec2는 작은컴퓨터라고 생각하면 되는데 s3와 비교하면 당연히 heavy하다. s3는 웹 상에 존재하는 작은 하드공간이라 같은 것이다.

 

CI

Continuous Integration. 지속적인 통합. 내가 짠 코드를 자동으로 머지하고 테스트해주면서 개발자의 수고를 덜어주는 개발환경이다. 

CODE => BUILD => TEST

CD

Continuous Delivery / Deployment. 지속적인 배포. 내가 짠 코드가 배포를 위한 준비 되었는지 확인하고 실제 배포를 시킨다.  Continuous delivery와 Continuous deployment는 조금 다르다. 전자는 배포를 위한 준비가 된 후 수동적으로 배포를 시키는 것 이고, 후자는 준비하고 자동으로 배포까지 완료시켜버린다. 회사별로 상황에 따라 다른 선택지를 쓰는데 자신있음 후자를 쓴다고 한다.

Prepare release ==== (stop) ====  > Deploy release

CI/ CD를 도와주는 툴들

Jenkins, Github actions, Buildkite, BigBucket pipelines, Gitlab CI/CD 등 많은 툴들이 있는데 요즘은  Github actions로 쉽게 CI/CD 개발환경을 구축 할 수 있다.

 

GitHub Actions

GitHub Actions는 GitHub에 내장된 CI/CD로, 레포에 특정 이벤트 - push, PR 등 - 가 발생했을 때 정의된 작업을 수행한다. 올라온 PR의 코드 상태를 체크하거나, 테스트를 수행하고 커버리지를 기록한다던가 하는 일반적인 작업들을 아주 쉽게 설정하여 사용할 수 있다.