SpringBoot/AWS

SpringBoot/AWS

무중단 배포를 진행하며 겪은 에러

책을 통해 실습을 진행하면서 여러 번 에러를 마주쳤지만, 금방 고칠 수가 있었다. 대부분 오타이거나 스프링 부트 버전 변경으로 인해 약간 설정이 달라진 것이었다. 스프링 부트는 처음 경험해 본 것은 아닌 데다가 잘 정리된 글들도 있어서 금방 해결했다. 하지만 무중단 배포 과정을 진행하면서부터는 에러로 인해 조금 고생을 했다. AWS와 리눅스는 처음 사용해보기에 더 그랬던 것 같다. 하루 넘게 약 이틀정도에 걸쳐 해결을 했다. 이 과정에서 작성한 스크립트 코드들도 살펴보고 Deploy log도 살펴보고, EC2에서 파일이나 폴더도 지웠다가 다시 시도해 보았다. 그러면서 작성된 스크립트 코드들이 어떻게 진행되는지 더 자세히 알 수 있었고, 처음 사용해 본 리눅스의 명령어들도 조금은 친숙해졌다. 에러를 해결하..

SpringBoot/AWS

무중단 배포

배포 자동화 환경을 구축했지만, 배포하는 동안 애플리케이션이 종료된다는 문제가 있다. 새로운 Jar가 실행되기 전까지는 기존 Jar를 종료시켜 놓기 때문에 서비스가 중단된다. 무중단 배포 방식 AWS에서 블루 그린(Blue-Green) 무중단 배포 도커를 이용한 웹서비스 무중단 배포 엔진엑스(NGinx)를 이용해 무중단 배포를 해보겠다. 엔진엑스 웹 서버, 리버스 프록시, 캐싱, 로드 밸런싱, 미디어 스트리밍 등을 위한 오픈소스 소프트웨어 엔진엑스의 기능들 중 리버스 프록시가 있다. 리버스 프록시 엔진엑스가 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 행위 이 리버스 프록시를 통해 무중단 배포 환경을 구축할 것이다. 엔진엑스의 구조 하나의 EC2 혹은 리눅스 서버 엔진엑스 1대 스프링 부트 Jar ..

SpringBoot/AWS

CodeDeploy 로그 확인

CodeDeploy에 관한 대부분 내용은 /opt/codedeploy-agent/deployment-root에 있다. cd /opt/codedeploy-agent/deployment-root drwxr-xr-x 7 root root 101 Mar 18 17:52 6eeb00d9-365e-44e3-b6c4-914a90a50e70 drwxr-xr-x 2 root root 247 Mar 18 17:52 deployment-instructions drwxr-xr-x 2 root root 46 Mar 18 16:42 deployment-logs drwxr-xr-x 2 root root 6 Mar 18 17:53 ongoing-deployment 첫 번째 줄 최상단의 영문과 대시(-)가 있는 디렉토리명은 CodeD..

SpringBoot/AWS

Github Actions 배포 자동화

여러 개발자의 코드가 실시간으로 병합되고, 테스트가 수행되는 환경, master 브랜치가 푸시되면 배포가 자동으로 이루어지는 환경 구축해 보자 CI, CD CI(Countinuous Integration. 지속적 통합) 코드 버전 관리를 하는 VCS 시스템(Git, SVN 등)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정 CD (Continuous Deployment. 지속적 배포) 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행하는 과정 CI 도구를 도입했다고 해서 CI를 하고 있는 것은 아니다. http://bit.ly/2Yv0vFp Continuous Integration (original version) A long-form article entit..

SpringBoot/AWS

스프링 부트에서 작성하는 테스트 코드

package com.ewok.study.springbook; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; // @SpringBootApplication 스프링부트의 자동설정, 스프링 Bean 읽기와 생성을 모두 자동으로 설정 @SpringBootApplication // @SpringBootApplication이 있는 위치부터 설정을 읽기 때문에 항상 프로젝트의 최상단에 위치 해야함 public class Application { // 프로젝트의 메인 클래스 public static void main(String[] args) { //..

SpringBoot/AWS

스프링 부트 시작하기

위 책을 따라 스프링 부트와 AWS에 대해 배워보려고 한다. 그래들 프로젝트를 스프링 부트 프로젝트로 변경하기 학습을 위해 스프링 이니셜라이저를 통해 진행하지 않는다. build.gradle plugins { // 이 3개는 자바와 스프링부트를 사용하기 위한 필수 플러그인 id 'org.springframework.boot' version '2.4.1' // RELEASE 삭제 // 스프링 부트의 의존성들을 관리해주는 플러그인 id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } group 'com.ewok.study' version '1.0.4-SNAPSHOT-'+new Date().format("yyyyMMddHHmmss"..

ewok
'SpringBoot/AWS' 카테고리의 글 목록