본문 바로가기
반응형

Clone Coding/스프링 부트와 AWS22

[Nginx] 무중단 배포 무중단 배포 방식 AWS에서 블루 그린(Blue-Green) 무중단 배포 도커를 이용한 웹서비스 무중단 배포 L4 스위치를 이용한 무중단 배포 ... 본 프로젝트에서는 저렴하고 쉬운 NGINX를 사용해서 무중단 배포가 가능하게 하겠다. 기존에 쓰던 EC2 인스턴스에 적용하면 되고, 개인이나 사내 서버 등 다양하게 사용될 수 있다. (우리 회사에서도 일부 서비스에선 Apache가 아닌 Nginx 사용하기도 한다.) NGINX 동작 구조 사용자는 서비스 주소로 접속 (http의 경우 80 포트, https의 경우 443 포트) Nginx는 사용자 요청을 받아 현재 연결된 Spring boot로 요청 전달 두 번째 Spring boot는 연결되어 있지 않아 요청받지 못한다. 신규 배포가 필요한 경우 연결되지 .. 2021. 3. 22.
[CodeDeploy] 배포 자동화 yeonyeon.tistory.com/72 에서 이어지는 글 입니다. 연동, 단순 빌드 및 배포 과정은 위 글에서, 배포 자동화 과정은 본 글에서 확인해주세요. 이제 Jar를 배포해 실행까지 해보자. 배포 자동화하기 1. deploy.sh 파일 생성 프로젝트에 scripts 폴더를 만든 후 그 안에 deploy.sh 파일을 생성한다. #!/bin/bash REPOSITORY=/home/ec2-user/app/step2 PROJECT_NAME=freelec-springboot2-webservice echo "> Build 파일 복사" cp $REPOSITORY/zip/*.jar $REPOSITORY/ echo "> 현재 구동중인 애플리케이션 pid 확인" CURRENT_PID=$(pgrep -fl $PRO.. 2021. 3. 16.
[AWS] Travis CI, AWS S3, CodeDeploy 연동하기 AWS S3 Amazon Web Service에서 제공하는 일종의 파일 서버 정적 파일이나 배포 파일 등을 관리하는 기능 지원 이미지 업로드 구현 시 자주 사용 CodeDeploy AWS의 배포 서비스 오토 스케일링 그룹 배포, 블루 그린 배포, 롤링 배포, EC2 단독 배포 등 많은 기능 지원 그 외 AWS의 배포 서비스 ▼ 더보기 Code Commit 깃허브 같은 코드 저장소 프라이빗 기능 지원 Code Build Travis CI 같은 빌드용 서비스 멀티 모듈을 배포해야 하는 경우에 사용하기 괜찮음 규모가 있는 서비스에서는 Jenkins, TeamCity 등을 더 자주 이용함 훌륭한 대체재가 많아 자주 사용하는 서비스들은 아니다. 앞으로의 프로젝트 구조 (예상) 전달 과정 1 Travis CI → .. 2021. 3. 15.
[Travis CI] 빌드 자동화 드디어 AWS EC2에 프로젝트 배포, RDS와의 연동, OAuth 2를 이용한 로그인 기능까지 마쳤다. 이제 Travis CI를 이용해 프로젝트 배포를 자동화시킬 예정이다. Jenkins를 이용하는 것도 괜찮지만, 설치형 도구라 EC2 인스턴스를 하나 더 만들어야 한다. ( Jenkins 이용하기: yeonyeon.tistory.com/56?category=931428 ) 본 포스팅에서는 일단 빌드까지만 자동화하도록 만들었다. 빌드: 실행 가능한 sw 산출물을 만드는 일련의 과정 배포: 빌드 결과인 산출물을 사용자가 접근 가능한 환경에 배치시키는 일 Travis CI를 이용한 자동 빌드 1. travis-ci.org/ 깃허브 계정을 통해 회원가입 Travis CI - Test and Deploy You.. 2021. 3. 12.
[OAuth 2] 구글, 네이버 연동 설정 바꾸기 원래는 OAuth 2 설정들을 로컬에 걸어놨었다. 구글: yeonyeon.tistory.com/34?category=920206 네이버: yeonyeon.tistory.com/35?category=920206 프로젝트를 AWS EC2 인스턴스에 배포했으니, 구글과 네이버에서도 설정을 변경해야 한다. Google 1. 구글 콘솔에 접속해서 본인의 프로젝트로 이동한다. -> console.cloud.google.com/home/dashboard Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com 2. ec2 인스턴스에서 DNS 주소를 복사한다. 3. 구글 콘솔에서 API 및 서.. 2021. 3. 11.
[Spring] 스프링 부트로 RDS 접근하기 기존 프로젝트에서 변경사항 기존 (h2) 신규 (RDS - MariaDB) 테이블 생성 자동 생성 직접 쿼리 이용 프로젝트 설정 db 드라이버 필요 db 드라이버 필요 RDS 테이블 생성 RDS에 다음 sql문들을 실행시킨다. CREATE TABLE POSTS ( ID BIGINT NOT NULL AUTO_INCREMENT, CREATED_DATE DATETIME, MODIFIED_DATE DATETIME, AUTHOR VARCHAR(255), CONTENT TEXT NOT NULL, TITLE VARCHAR(500) NOT NULL, PRIMARY KEY (ID) ) ENGINE=InnoDB; CREATE TABLE USER ( ID BIGINT NOT NULL AUTO_INCREMENT, CREATE.. 2021. 2. 16.
[AWS EC2] 배포 스크립트 생성 배포란? 작성한 코드를 실제 서버에 반영하는 것. git clone 혹은 git pull을 통해 새 버전의 프로젝트를 받음 Gradle이나 Maven을 통해 프로젝트 테스트와 빌드 EC2 서버에서 해당 프로젝트 실행 및 재실행 위와 같은 과정을 배포할 때마다 매번 명령어를 실행시키는 것은 번거롭다. 이를 쉘 스크립트로 작성해 스크립트만 실행하면 차례로 진행되도록 하는 스크립트를 짜보겠다. (+쉘 스크립트란? .sh 파일 확장자를 가진 파일. 리눅스에서 기본적으로 사용 가능한 스크립트 파일의 한 종류.) deploy.sh 파일 생성 vim ~/app/step1/deploy.sh # 자주 사용하는 값 변수에 저장 REPOSITORY=/home/ec2-user/app/step1 PROJECT_NAME=spri.. 2021. 2. 15.
[AWS EC2] EC2 서버에 프로젝트 배포하기 프로젝트는 깃허브에서 받아올 것이다. putty를 통해 EC2를 접속하고 git을 설치하자 $ sudo yum install git $ git --version 프로젝트 저장할 디렉토리 생성 및 이동 $ mkdir ~/app && mkdir ~/app/setp1 $ cd ~/app/step1 클론 $ git clone [깃허브 레포지토리 주소] 파일 복사 확인 참고로 클론된 프로젝트명은 레포지토리 이름을 확인하면 된다. $ cd [클론된 프로젝트명] $ ll 코드들이 잘 수행되는지 테스트로 확인해보기 여기 테스트에서 정말 다양한 오류가 발생한다ㅠㅠ $ ./gradlew test 오류1 ./gradlew: Permission denied -> 아래 명령어로 실행 권한을 부여 $ chmod +x ./grad.. 2021. 2. 15.
[AWS RDS] RDS 접근하기 - sqlDeveloper, EC2 지난 번에 RDS의 보안 그룹에 내 ip와 ec2에 대해 인바운드 규칙을 추가했다. -> yeonyeon.tistory.com/38 이제 RDS에 접근이 가능한지 확인해 보겠다. sqlDeveloper에서 RDS 연동 일단 sqlDeveloper에 MySQL 허용부터 해줬다. (Oracle DB 사용할 경우 생략) dev.mysql.com/downloads/connector/j/에 접속한 뒤 다운로드 SQL Developer에서 ' 도구-환경설정-데이터베이스-타사 JDBC 드라이버 ' 항목 추가를 눌러서 다운받은 jar 파일을 추가한다. 아래 값들을 입력한다. 엔드 포인트는 RDS 인스턴스를 클릭하면 세부 정보에서 볼 수 있다. 값 입력 -> 데이터베이스 선택 -> 접속 하면 오른쪽 이미지와 같이 접속에.. 2021. 2. 10.
반응형