[프로젝트 일지 #2] 프로젝트 1차 배포
🎯 배경
이번장에서는 프로젝트를 배포해볼 예정이다. 그러기 위해서는 서버가 필요한데 나는 서버로 AWS클라우드를 선택하였다. 선택 이유는 2가지가 있다. 첫번째 이유는 현존하는 클라우드중에서 가장 친숙하기 때문이다. 그리고 두번째 이유는 많은 트래픽이 없으며, 배포할 파일도 크지 않기때문에 프리티어로 충분하다고 생각하였다. 그래서 AWS EC2를 사용하였다. (물론, 추후에 클라우드가 변경이 될지도 모른다.)
준비 (자세한 설명은 생략)
- 프리티어 구매 완료
- 아웃바운드 설정 완료
수동 배포
스프링 부트 파일은 자바로 되어있다. 자바를 실행을 시키려면
1
java -jar 파일명.jar
라는 명령어를 쳐야 실행이 되어진다.
이걸 하기 이전에
현 PC에서 AWS - EC2로 파일을 이동을 시켜야 한다.
파일을 옮기는 방법에 대해 알아보자.
1
scp - i pem키 전송시킬 파일 ec2주소
이렇게 하면 된다고 한다.
이렇게 하면 배포는 끝났다. 놀랍게도 배포는 이게 끝이다. 파일 옮기고 끝..
그러면 이걸 위에서 학습한것처럼 java -jar를 하면 될까?
애석하게도 저 명령어는 되지 않는다.
1
-bash: java: command not found
라는 명령어가 나올뿐이다.
설치
일단 무엇을 설치를 할지 생각해보자. 이건 자바니까 자바는 당연히 설치를 해야할거구 그리고 Mysql도 설치를 해야한다.
설치해보자.
자바를 설치하고 실행해보자.
mysql도 설치하고 다시 실행해봤다.
이제 서버를 올렸으니 다른 PC에서 접속을 해보자.
확인
확인도 하고 정상적으로 배포를 할 수 있었다.
생각보다 배포하는게 어렵지는 않았다. 단순히 파일을 옮기고 실행하면 된다. 그렇다면 왜 CI/CD가 왜 필요한걸까? 왜 젠킨스는 필요한걸까? github action은 왜 필요한걸까?
지금은 간단한 경우지만 복잡한 경우는 어떻게 해야할까? 자바나 도커나 mysql같은 경우는 미리 설치한다지만
jar파일 실행은 배포할때마다 해야 할거고 파일을 옮기는 것도 배포할때마다 해야 할거다.
물론 지금은 간단한과정이지만 이게 4-5단계가 더 있다면 여기에 시간을 더 투자를 하기에는 너무 귀찮다.
그래서 하는것이 CI/CD라고 생각한다.
CI/CD에 대한 나의 생각
CI/CD에 대한 내용은 아니기때문에 그거에 대한 내용은 생략한다. 아무튼 CI/CD툴이 우리에게 주는 이점은 2가지가 있다고 생각한다.
- 배포하는 과정에서 귀찮은 작업들을 추상화 시킬 수 있다.
- 버튼 딸각으로 배포할 수 있기때문에 인프라를 잘 모르는 팀원이 있는 경우도 배포가 가능하게 해준다.
이렇게 장점이 있지만 개발자라는 직업이 트레이드 오프를 생각하는 직업이라 생각하기때문에 저걸 하면서 잃는 손실도 생각을 해야 한다.
이것 또한 2가지로 생각이 가능한데
- 인프라에 대한 지식을 몰라도 배포가 가능하기 때문에 인프라에 대한 지식이 다소 부족할 수 있다.
- 예를들어, java -jar를 통해 자바를 실행 시킨다는걸 모를수 있다 생각한다.
- 수동배포가 아닌 CI/CD를 통해 자동화를 시킨것이기때문에 CI/CD툴을 따로 공부를 해야 한다.
이렇게 얻은 이점과 잃는 손실을 고려해보면 CI/CD를 도입을 해야하는지 결정할 수 있다고 생각한다.
결론
따지고보면 인프라를 더 공부하냐 CI/CD툴을 공부하냐 이 차이인데 사실 배포하는 입장에서는 CI/CD툴도 몰라도 배포는 가능하다 생각한다. 개인적으로 CI/CD툴을 이용하는 목적은 배포 지식이 없는 팀원들도 원할게 협업이 가능하게 도와주는 장치라고 생각한다.
다음에 진행할일
다음에는 무엇을 해볼까?
- CI/CD툴 확인
- git 확인
- (프론트+백엔드) 합치는거 vs (프론트 / 백엔드) 분리
이렇게 해보자.