본문 바로가기

springboot15

로컬 Spring Boot에 SSL 적용하기 Facebook OAuth를 개발해야 하는 경우 등 로컬 환경에서 HTTPS 서버가 필요할때가 종종 있습니다. (페이스북 OAuth 설정 화면) 운영 혹은 개발 환경에서는 Nginx 혹은 AWS ELB와 같은 곳에서 SSL 인증서를 설치하기 때문에 순수하게 로컬 환경에서만 SSL 인증서를 사용할 수 있는 방법이 필요합니다. 이번 시간에는 Spring Boot 로컬 환경에서 SSL 인증서를 개발 & 적용 하는 방법을 소개 드리겠습니다. 먼저 프로젝트 디렉토리 안에서 다음과 같은 명령어를 실행합니다. keytool -genkey -alias bns-ssl -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 -ali.. 2018. 10. 29.
Spring Boot & HikariCP Datasource 연동하기 안녕하세요? 이번 시간엔 Spring Boot & Hikari Datasource 연동하기 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 기존에 SpringBoot에선 tomcat-jdbc를 기본 Datasource 로 제공했었는데요. 2.0부터 HikariCP가 기본으로 변경되었습니다. (참고) HikariCP는 이전 버전에서도 많은 분들이 설정을 변경해서 사용했을정도로 인기가 많았습니다. HikariCP의 Datasource 정보를 설정하는것에 막히신 분들 혹은 오해하고 계신분들이 계셔서 한번 정리하게 되.. 2018. 5. 21.
8) 스프링부트로 웹 서비스 출시하기 - 8. 운영 환경 설정 저번시간까지 배포 환경에 대한 설정을 진행했습니다! 이제는 서비스 중단 없이 배포가 가능한 상태가 되었는데요. 이대로 서비스 하면 될까요? 뭔가 하나 놓친게 있지 않으신가요? 현재는 스프링부트에서 실제 운영 DB의 설정을 갖고 있지 않습니다. 즉, 아직은 프로젝트가 AWS RDS와 연동된 상태가 아닙니다. 그래서 이번 시간엔 스프링부트와 운영 DB 접근 등의 실제 운영환경 설정을 진행하겠습니다. 8-1. 운영 DB 접근 저번 시간에 저희는 운영 YAML (real-application.yml)만 별도로 분리해 EC2 서버에 추가했습니다. 간단하게 생각하면 운영 DB 접속 정보는 real-application.yml에 추가하면 됩니다. 하지만 이렇게 될 경우 set1, set2 설정에 같은 내용을 반복 추.. 2018. 2. 8.
7) 스프링부트로 웹 서비스 출시하기 - 7. Nginx를 활용한 무중단 배포 구축하기 이번 시간엔 무중단 배포 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) 7-1. 이전 시간의 문제점? 이전 시간에 저희는 스프링부트 프로젝트를 Travis CI를 활용하여 배포 자동화 환경을 구축해보았습니다. 이젠 Master 브랜치에 Push만 되면 자동으로 빌드 & 테스트 & 배포가 자동으로 이루어집니다. 하지만! 배포하는 시간 동안은 어플리케이션이 종료가 됩니다. 긴 시간은 아니지만, 새로운 Jar가 실행되기 전까진 기존 Jar를 종료시켜놓기 때문에 서비스가 안됩니다. 하지만 최근 웹 서비스들은 대부분 배포하기 위해 서비스를 정지시키는 경우가 없습니다. 어떻게 서비스의 정지 없이 배포를 계속 할 수 있는지 이번 시간에 확인하고 서비스에 적용해보겠습니다. 7-2. 무중단 배포? 예전.. 2018. 2. 2.
6) 스프링부트로 웹 서비스 출시하기 - 6. TravisCI & AWS CodeDeploy로 배포 자동화 구축하기 이번 시간엔 배포 자동화 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) 6-1. CI? 이전 시간에 저희는 스프링부트 프로젝트를 간단하게나마 EC2에 배포해보았습니다. 스크립트를 개발자가 직접 실행시킴으로써 발생하는 불편을 경험했습니다. 그래서 이번 시간엔 CI 환경을 구축해보려고 합니다. 코드 버전 관리를 하는 VCS 시스템에 PUSH가 되면 자동으로 Test, Build가 수행되고 Build 결과를 운영 서버에 배포까지 자동으로 진행되는 이 과정을 CI (지속적 통합)이라고 합니다. 단순히 CI 툴을 도입했다고 해서 CI를 하고 있는 것은 아닙니다. 마틴 파울러의 블로그를 가보시면 CI에 대해 다음과 같은 4가지 규칙을 이야기합니다. 모든 소스 코드가 살아있고(현재 실행되고) 어느 .. 2018. 1. 22.
5) 스프링부트로 웹 서비스 출시하기 - 5. EC2에 배포하기 이번 시간엔 지금까지 개발한 내용을 EC2에 배포 해보겠습니다. (모든 코드는 Github에 있습니다.) 5-1. EC2에 Git 설치 및 프로젝트 Clone 배포에 앞서 기반작업이 되는 Java와 Git을 EC2에 설치하겠습니다. 5-1-1. Java 8 설치 현재(2018.01.14) EC2가 Java7이 기본버전이라 Java8로 버전업하겠습니다. AWS EC2에 접속하셔서 아래 명령어를 실행 합니다. sudo yum install -y java-1.8.0-openjdk-devel.x86_64 설치가 완료되셨으면 인스턴스의 Java 버전을 8로 변경하겠습니다. sudo /usr/sbin/alternatives --config java 버전이 변경되셨으면 사용하지 않는 Java7을 삭제합니다. sudo.. 2018. 1. 18.