개발 공부 기록/03. AWS 6

AWS에서 무중단 서비스를 구축해 보자.

새로운 Jar가 실행되기 전까지 (배포하는 동안) 기존 jar를 종료시키기 때문에 서비스가 중단된다. Nginx를 이용한 무중단 배포를 해보자. 리버스 프록시? 엔진엑스가 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 것. 리버스 프록시 서버(엔진엑스)는 요청을 전달한다. 실체 요청에 대한 처리는 뒷단의 웹 애플리케이션 서버들이 처리한다. 리버스 프록시를 통해 무중단 배포 환경을 구축해보자! 1. 기존에 사용하던 EC2 인스턴스를 활용한다. 엔진엑스는 80(http), 443(https) 포트를 할당한다. 스프링부트 1 Jar는 8081 포트로 실행한다. 스프링부트 2 Jar는 8082 포트로 실행한다. 엔진엑스와 하나의 스프링부트만 연결하고, 신규 버전으로 배포가 끝나면 reload를 통해 다른 스..

AWS에서 Travis를 이용해 CI/CD를 해보자

1. CI / CD 란? 코드가 git에 push 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정을 CI (Continuous Integration - 지속적 통합) 이라고 한다. 이 빌드 결과가 자동으로 운영 서버에 무중단 배포까지 진행되는 과정을 CD (Continuous Deployment - 지속적인 배포) 라고 한다. 2. CI의 장점 현대 개발에서는 여러 프로그래머가 하나의 프로젝트를 같이 개발하므로 지속적인 코드가 통합되는 환경(CI)를 구축하고, 테스트코드와 빌드를 수행하면서 자동으로 코드가 통합되어 개발에 집중할 수 있게 한다. 3. CD의 장점 한 두대의 서버에 개발자가 수동으로 배포를 하지않고, 수백대나 긴박하게 배포할 경우 수동으로 하면 오래걸리기 때문에 자..

AWS EC2 서버에 프로젝트를 배포해보자.

EC2서버에 git에서 clone해온 프로젝트 파일이 잘 되어있음을 확인한 후 시작한다. gradlew 파일은 그레이들이 설치되지 않는 환경이라도 그레이들을 쓸 수 있도록 지원해 주는 Wrapper 파일이다. 1. 배포 스크립트 만들기 작성한 코드를 실제 서버에 반영하는 것을 배포라고 한다. 배포과정을 하나하나 하는건 불편하다. 그러므로 쉘 스크립트로 작성해 실행하면 자동으로 진행되게끔 구성해 보겠다. vim ~/deploy.sh #! /bin/bash REPOSITORY=/home/ec2-user/app/step1 // 쉘에서는 $ 변수명으로 변수를 사용할 수 있다. 변수로 지정한것임. PROJECT_NAME= fr-springboot cd $REPOSITORY/$PROJECT_NAME/ // 프로젝트..

Windows에서 putty를 이용하여 aws ec2와 rds 서버에 접속해보자.

1. putty 설치 -> 말안해도 알테니 다들 설치했음을 믿는다. 2. .pem key -> .ppk로 변경 AWS에는 putty로 열시 ppk 파일이 필요하다. putty를 깔면 putty gen이 자동으로 깔리는데, 이 프로그램을 이용해서 pem 파일을 ppk 파일로 변환해주면 된다!. 저 빨간 Save private key를 눌러서 ppk로 바꿔준다. putty 설정 -> SSH -> Auth -> Private key file for authentication에 ppk 파일을 넣어주면 된다. 3. putty로 접속 Host Name에 ec2-user@탄력적 IP 주소 하고 접속한다면 접속이 될 것이다! 4. rds 접속 되는지 확인해보기 인텔리제이에서 Database -> MariaDB HOST..

AWS RDS 데이터베이스 환경을 만들어보자.

데이터베이스 구축 및 쿼리 튜닝에 대해서 잘 알아야 한다. 서버 코드를 작성하는 것만큼 데이터베이스를 잘 다룰 줄 아는 것도 중요하다. AWS에서 지원하는 RDS(Relational Database Service) 를 통해 DB를 구축하고 EC2 서버와 연동해보자. 1. RDS 인스턴스 생성하기 이와 같이 rds 선택하고, 데이터베이스 생성 눌러준다. 상세설정에선 위와 같이 설정해준다. 네트워크 및 보안 설정을 해준다. 데이터베이스 옵션에서 이름 및 그룹을 설정해준 이후, 데이터베이스를 생성해주자! 2. RDS 설정하기 타임존 Character Set Max Connection 을 설정해주자. 1. time_zone 설정 2. character_set 설정 3. max_connections 수정 프리티어..

AWS EC2 회원가입 및 설정을 따라해보자.

클라우드 서비스 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수이다. 클라우드 서비스는 인터넷(클라우드)를 통해 서버, 파일저장, DB, 네트워크, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다. AWS의 EC2는 로그관리, 모니터링, 하드웨어 교체, 네트워크 관리 등도 기본적으로 지원해준다. 클라우드의 형태 IaaS ( Infrastructure as a Service) 기존 물리 장비를 미들웨워와 함께 묶어둔 것 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해주는 서비스 AWS EC2, S3, GCP, NCP 등 (우리는 인프라를 관리한다) PaaS ( Platform as a Service ) IaaS에서 한 번 더 추상화한 서비스 ( 개발, 테스트, 배포..