Jenkins로 배포 자동화 해보기

2021. 7. 17. 15:56프로젝트/Salle(살래) 중고거래 웹


다시 돌아왔습니다. 운좋게도 회사에서 AWS EC2로 애플리케이션 배포까지 진행하고 있는데, 자동화가 이루어지지 않은 상태기 때문에 자동화 + 무중단 배포라는 임무가 주어졌습니다. 힘들겠지만 7월 말 회사 테스트 서버부터 적용시키는 것을 목표로 우선 개인 프로젝트를 통해 익혀보려고 합니다.

 

첫번째 테마는 자동화 입니다. 우선 Git에 commit하면 build, test, deploy가 자동으로 구동되는 CI/CD 툴을 정했습니다. Jenkin를 사용하기로 했고 그 이유는 회사에서 무료버전을 원할 수 있기도 하고, 설정이 까다로운 툴을 써볼수록 나중에 Travis를 사용해도 편할 거 같기 때문입니다.(Travis는 Production 버전은 유료입니다) 그리고 현재 서버/프런트/앱 배포 방식을 파악하고, Jenkins와 AWS를 적용시킬 수 있을지 조사했습니다.

 

CI/CD

 

CI/CD란?

https://medium.com/avmconsulting-blog/automated-ci-cd-with-jenkins-39b21c7c8035

 

하나의 프로젝트에서 많은 개발자들이 수정한 코드를 통합하는 과정을 말합니다. 코드 커밋이 이루어질 때마다 코드는 빌드되고 테스트됩니다. 테스트가 통과되면 빌드는 배포 단계에서 또한번 테스트된 다음 production 레벨로 푸시됩니다.

커밋을 하면 빌드, 테스트, 배포까지 자동화 해주는 기술이라 보면 됩니다. 그래서 에러가 있을 때 알림을 줘서 실시간 수정이 가능한 장점이 있습니다.

 

Travis

 - 장점 : 다양한 언어지원이 가능하며, install/config 시간이 짧습니다.

 - 단점 : Enterpirse 사용 시 유료입니다.(회사에 도입하려면 결재를 맡아야합니다...)

 

Jenkins

 - 장점 : Sun사에서 제공한 서비스라 Java에 특화되어 있음, 커스터마이징이 가능함, 무료임, Travis에 비해 사용률이 높습니다.

 - 단점 : 직접 설정해야되는 부분이 많이 때문에 시간이 오래걸립니다.

참고링크 : Installing Jenkins on AWS tutorial

 

Jenkins on AWS

Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

www.jenkins.io

 

선택은 Jenkins.

이유는 회사에서 무료버전을 원할 수 있기도 하고, 설정이 까다로운 툴을 써볼수록 나중에 Travis를 사용해도 편할 거 같기 때문입니다.

참고링크 : https://www.guru99.com/jenkins-vs-travis.html 

 

Travis-CI vs Jenkins: What is the difference?

Details Last Updated: 15 June 2021 What is CI? Continuous integration is a software development method where members of the team can integrate their work at least once in a day. In this method, every integration is checked by an automated build to search t

www.guru99.com

 

 

현재 배포 방식

 

- 웹(프런트/서버) : .Net, C#, Vue.js

   - AWS EC2에 install된 Jenkin로 build 스크립트만 실행해주면 됩니다.

- 앱(앱/서버) : Spring, Kotlin, Java

   - Jenkins에서 build하고 생성된 파일(jar, apk)을 AWS에 자동 업로드 해주는 기능이 포함되어야 합니다.

  - 참고자료 : Jenkins with Android(재밌음) : https://nickskelton.medium.com/android-continuous-integration-installing-jenkins-on-an-amazon-ec2-instance-454951a0cd80

 

Android Continuous Integration: Installing Jenkins on an Amazon Ec2 Instance

The end goal: I want to check my Android code into Bitbucket or Github and minutes later, my app is live in the Google Play Store.

nickskelton.medium.com