AWS에 관심이 있다면 "AWS는 어렵고 비싸다"라는 말을 많이 들었을 것이다. 하지만 AWS 라이트세일로 AWS를 쉽고 저렴하게 사용할 수 있다. 여기서는 AWS 라이트세일을 어떻게 사용하는지 알아보자.
AWS 라이트세일은 아마존에서 운영하는 웹 서비스에 특화된 클라우든 서비스이다. AWS를 처음 시작하려면 공부할 내용이 무척 많다. 하지만 AWS 라이트세일은 웹 서비스 운영에 꼭 필요한 기능만 준비되어 있어 비교적 공부할 내용이 적다. 또한 AWS와 비교하면 AWS 라이트세일은 정말 가성비가 좋다.
SBB 서비스를 서버에 적응하기 위해서는 서버에 접속하여 프로그램을 설치하고 환경 설정을 진행해야 한다. 이번 장에서는 서버 작업을 위해 필요한 SSH, SFTP 도구를 설치하고 사용해보자.
SSH 또는 SFTP 프로그램으로 서버에 접속하기 위해서는 AWS의 계정 프라이빗 키가 필요하다. 프라이빗 키는 AWS 라이트세일 계정에서 .pem 파일로 키를 다운받을 수 있다.
SSH 클라이언트는 서버에 접속하는 단말기 역할을 하므로 터미널 프로그램이라고도 한다.
프라이빗 키가 준비되었으므로 이제 SSH 터미널 프로그램을 다운로드 받고 설치하자. 좋은 SSH 터미널 프로그램이 많지만 여기서는 무료로 사용할 수 있고 많은 사람들이 추천하는 MobaXterm을 사용해보자
위와 같이 설정하면 MobaXterm으로 서버에 접속할 수 있다. 이제 MobaXterm을 이용하여 서버작업을 할 수 있다.
SBB서비스는 jar 형태로 서버에 배포할 것이다. 이 때 배포파일로 만든 jar 파일을 서버에 전송해야 한다. 이렇게 파일을 서버에 전송하기 위해서는 SFTP 클라이언트 프로그램이 필요하다.
좋은 SFTP 프로그램이 많지만 여기서는 무료로 사용할 수 있는 파워질라를 사용함
이와 같이 설정값을 모두 입력하고 "연결" 버튼을 누르면 서버에 접속할 수 있음
좌측 "로컬 사이트"는 내 컴퓨터를 의미하고 우측의 "리모트 사이트"는 서버를 의미함 드래그 앤 드롭이나 파일 우측 마우스버튼을 클릭하여 "업로드" 또는 "다운로드" 할 수 있음
먼저 터미널(mobaXterm)을 사용하여 서버에 접속하자.




인텔리제이에서 밑의 링크처럼 .jar 파일 생성하기
https://chunghyup.tistory.com/79
이제 생성한 .jar 파일을 파일질라를 통해 서버에 전송해보자
그냥 로컬에 있는 .jar파일을 드래그 앤 드롭해서 아까 만든 서버의 sbb 파일에 업로드 한다.

다음과 같이 서버에서 배포 파일을 실행하고 웹 브라우저에서 앞서 설정한 고정 IP에 포트 번호를 붙여 접속하면 서비스가 보여지는 것을 볼 수 있다.
위와 같이 같이 단순하게 실행하면 서버에 접속한 터미널이 종료하면 서비스도 중단된다. 따라서 이를 방지하기 위해서는 백그라운드로 서비스를 실행해야 한다.
SBB는 데이터베이스로 H2 데이터베이스를 사용한다. 그리고 개발 편의상 H2 데이터베이스의 사용자명은 sa 비밀번호는 빈값으로 설정하였다. 하지만 서버환경에서도 이처럼 사용하는 것은 위험하다.
왜냐하면 누구나 서버의 H2 데이터베이스 콘솔에 로그인할 수 있기 때문이다.
H2 데이터베이스에 비밀번호를 설정하는 방법은 매우 간단하다. application.properties 파일에 다음과 같은 항목에 다음처럼 비밀번호만 설정하면 된다.
"spring.datasource.password=1234"
하지만 우리는 개발 편의를 위해 로컬 환경은 여전히 비밀번호 없이 사용하고 서버 환경에만 비밀번호를 설정하고자 한다.


이렇게 새로 생성한 배포파일을 파일질라를 이용해 서버의 sbb 디렉토리에 업로드하자
데이터베이스에 비밀번호를 설정했기 때문에 기존에 있던 데이터베이스 파일들을 모두 지워야 한다.

SBB 서비스는 현재 8080번 포트로 서비스를 하고 있다. 하지만 대부분의 인터넷 서비스는 8080번 포트 대신 80번 포트로 서스를 한다. 80번 포트를 사용하면 고정아이피:80 과 같이 사용해도 되고 고정아이피 처럼 80번 포트르르 생략하여 사용할 수 있다. 왜냐하면 80번 포트가 HTTP 프로토콜의 기본 포트이기 떄문이다.
Nginx는 높은 성능을 위해서 개발된 웹 서버로 설정이 무척 간단하여 쉽게 사용할수 있다.
스프링부트는 기본적으로 logback이라는 로깅 툴을 사용하여 로그를 출력한다. STS의 콘솔에 출력되는 문자열과 서버에서 sbb.log 파일에 출력되는 문자열이 모두 logback에 의해 출력되는 로그이다.
하지만 현재 서버에 생성되는 로그 파일에는 다음과 같은 몇가지 문제가 있다.
위에서 말한 서버 로그의 문제점을 해결하려면 다음과 같이 application-prod.properties 파일을 수정해야 한다.

현재 SBB 서비스에 접속하기 위해서는 브라우저 주소창에 고정 IP를 입력해야 한다. 하지만 대부분의 웹 사이트는 이런 식으로 접근하지 않고 기억하기 쉬운 도메인을 사용함

이제 브라우저에 고정 IP 대신 도메인을 입력하여 서버에 접속할 수 있게 되었다. 하지만 브라우저의 주소창을 보면 다음과 같이 "주의 요함"이라는 경고 메시지가 표시됨
이러한 경고메시지가 보이는 이유는 https://pybo.kr 이 아닌 http://pybo.kr 처럼 https가 아닌 http 프로토콜을 사용했기 때문이다. 브라우저는 HTTPS가 아닌 HTTP 사용시 항상 이러한 경고 메시지를 보여준다.
HTTPS가 아닌 HTTP 프로토콜을 사용하면 브라우저(클아이언트)와 SBB 서비스(서버) 사이에 주고 받는 데이터가 암호화 되지 않는다. 클라이언트와 서버가 데이터를 주고 받는 네트워크 경로는 매우 복잡한데 이 과정에서 누군가가 데이터를 훔쳐보는 일은 어렵지 않다. 따라서 네트워크 구간에서 주고받는 데이터는 반드시 암호화 하여 데이터가 노출되더라도 무슨 내용인지 알 수 없게 해야 한다.
이러한 역할을 하는 것이 바로 HTTP에 SSL(Secured Socket Layer) 기능을 더한 HTTPS 프로토콜이다. 우리가 만든 SBB 서비스에 HTTTPS 프로토콜을 제공하기 위해서는 SSL 인증서가 필요하다.
SSL 인증서를 발급받아 Nginx에 적용하면 HTTPS 프로토콜로 서비스를 할수 있다.