왜 필요한가?
- 서버에서 돌릴 수 있는 jar 파일로 만들어 배포를 해야함
- 하지만 해당 작업은 단순 반복이 많음
- 반복되는 과정의 자동화 필요 + 휴먼 에러를 없애야 함
- CI가 왜 필요한가?
- 팀원들이 나누어 개발하던 것을 하나로 합치는 과정에서 문제 발생할 수 있음
- 코드 작성이 완료되면 바로 합쳐 오류에 대한 피드백 받을 수 있음
- 애자일하게 기능 개발을 완료하는 개발 문화와 잘 어울림
- CD가 왜 필요한가?
- 실제로 배포하는 과정에서 휴먼 에러가 발생 가능
- 이를 잡아줌
젠킨스
- 자바 기반의 자동화 CI/CD 툴
- 다양한 플러그인을 활용해 효과적인 자동화 가능
놀토 젠킨스
- 도커에 젠킨스 설치하여 사용
- Freestyle Project로 구성
- 플러그인 설치
- git pull request builder (github 리포에서 코드 pull 받아 올 수 있도록 설정)
- publish over ssh (jar 파일을 WAS EC2에 전송)
- 깃헙에서 젠킨스 관련 필요 설정 해주기
- 젠킨스 workspace/repository/ <- 해당 디렉토리에서 빌드 작업 진행
- 이후 jar 파일을 WAS EC2에 전송
- WAS EC2에서 실행시킬 쉘 스크립트를 실행
왜 필요한가?
- 놀토 서비스 특성상 많은 사진들을 저장해야 했음
- 파일 서버의 역할을 하는 S3가 적격
- 파일 서버 트래픽 증가 시 장비 증설 대행
- 저장 파일의 갯수를 계속해서 늘릴 수 있음
- 다른 파일 서버들과 비교해보진 않았지만 다음과 같은 장점이 있다고 함
- 내구성이 좋음 (클라이언트 파일 유실 X)
- 저렴한 비용 (사용한 만큼만 지불)
- 가용성 (파일 서비스 중단 거의 없음)
- 보안 (SSL을 통한 안전한 운반)
놀토의 S3 사용법
- S3 버킷 만들기
- 유일한 이름으로 만들어야 함
- 퍼블릭으로 공개하지 않음
- 따라서 Cloudfront CDN을 통해 접근해야함
- 어떤 S3 버킷에 대한 CDN인지 설정
- S3 bucket access "Origin Access Identity"를 사용하여 Cloudfront에서는 S3에 접근 가능하게 설정
- bucket policy도 곁들여서 업데이트 해주자
스프링에서 S3 버킷에 접근하기
- access-key, secret-key를 발급하여 BasicAWSCredentials을 활용하여 S3에 접근 가능
- 하지만 이는 발급 금지
- WAS EC2에 IAM 권한을 부여하여 S3에 접근 가능하였음
- ec2-s3-deploy