본문 바로가기

전체 글

(198)
[SpringBoot] 스프링부트로 웹서비스 출시(Nginx를 활용한 무중단 배포 구축하기 ) - 7[창천향로님 글 배우기] 이번 시간엔 무중단 배포 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) 7-1. 이전 시간의 문제점? 이전 시간에 저희는 스프링부트 프로젝트를 Travis CI를 활용하여 배포 자동화 환경을 구축해보았습니다. 이젠 Master 브랜치에 Push만 되면 자동으로 빌드 & 테스트 & 배포가 자동으로 이루어집니다. 하지만! 배포하는 시간 동안은 어플리케이션이 종료가 됩니다. 긴 시간은 아니지만, 새로운 Jar가 실행되기 전까진 기존 Jar를 종료시켜놓기 때문에 서비스가 안됩니다. 하지만 최근 웹 서비스들은 대부분 배포하기 위해 서비스를 정지시키는 경우가 없습니다. 어떻게 서비스의 정지 없이 배포를 계속 할 수 있는지 이번 시간에 확인하고 서비스에 적용해보겠습니다. 7-2. 무중단 배포? 예전..
[SpringBoot] 스프링부트로 웹서비스 출시(TravisCI & AWS CodeDeploy로 배포 자동화 구축하기) - 6[창천향로님 글 배우기] 이번 시간엔 배포 자동화 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) 6-1. CI? 이전 시간에 저희는 스프링부트 프로젝트를 간단하게나마 EC2에 배포해보았습니다. 스크립트를 개발자가 직접 실행시킴으로써 발생하는 불편을 경험했습니다. 그래서 이번 시간엔 CI 환경을 구축해보려고 합니다. 코드 버전 관리를 하는 VCS 시스템에 PUSH가 되면 자동으로 Test, Build가 수행되고 Build 결과를 운영 서버에 배포까지 자동으로 진행되는 이 과정을 CI (지속적 통합)이라고 합니다. 단순히 CI 툴을 도입했다고 해서 CI를 하고 있는 것은 아닙니다. 마틴 파울러의 블로그를 가보시면 CI에 대해 다음과 같은 4가지 규칙을 이야기합니다. 모든 소스 코드가 살아있고(현재 실행되고) 어느 ..
[Git] CLI 사용해서 Conflict 해결하기 로컬환경은 윈도우이기 떄문에 GUI를 사용해서 git을 이용했기 때문에 간편하게(?) 문제해결을 할 수 있었다. 그러나 EC2 리눅스를 사용하다가 conflict 현상이 발생했다... 따라서 CLI을 이용해서 conflic를 해결하는 방법을 공부하게 되었다. 해결 방법 : https://gist.github.com/karenyyng/f19ff75c60f18b4b8149
[SpringBoot] 스프링부트로 웹서비스 출시(EC2에 배포하기) - 5[창천향로님 글 배우기] 기본 베이스 출처 : http://jojoldu.tistory.com/263?category=635883 보충 설명 : 1. .yml 파일의 profiles 이해 : 74번 글 https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html 2. 리눅스: ㄱ. if문 : - http://jink1982.tistory.com/48 ㄴ. 리다이렉션 & 파이프라인 : - http://jdm.kr/blog/74 ㄷ. tail: - https://www.computerhope.com/unix/utail.htm ㄹ. sh 기초 - 명령어을 문자열로 치환($ 사용): -http://developer..
[SpringBoot] 스프링부트로 웹서비스 출시(EC2, RDS) - 4[창천향로님 글 배우기] 이번 시간엔 SpringBoot를 운영할 AWS 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) Tip) 운영 서버는 크게 클라우드 서비스(AWS, Azure 등) 과 호스팅 서비스(Cafe24, 코리아호스팅 등)을 이용하시면 됩니다. 비용은 일반적으로 호스팅 서비스가 훨씬더 저렴합니다. (24시간중 특정 시간에만 트래픽이 급격히 올라가는 경우가 아니라, 전반적으로 일정한 트래픽이 유지된다는 가정하에 입니다.) 하지만 여기서는 호스팅 서비스를 쓰지 않고 클라우드 서비스인 AWS를 사용하겠습니다. 많은 서비스 기업들이 클라우드 환경으로 이전중이기 때문에 이직하실때도 큰 도움이 되실꺼라 생각합니다. 4-1. AWS EC2 생성하기 기본적으로 AWS 계정이 있다는 가정하에 시작합니다. 혹시나 ..
[상식] 개발 서버 환경 이해(dev,stage,qa,production) 서버 개발을 가정하고, 먼저, 개발 및 운영에 사용할 서버를 어떻게 배치 해야할지를 살펴보자 일반적인 서버 개발환겨은 아래와 같이 local,dev,integration,qa,staging 그리고 production 환경을로 나뉘어 진다. 각자의 개발 과정에 따라, 각자의 역할과 목적이 다르고, 그에 따라서 시스템의 크기도 다르다. 꼭 모든 환경을 갖출 필요가 없으며, 프로젝트 환경에 따라서 각 환경을 합치거나 생략해도 된다. 그러면 각 환경에 대해서 살펴 보도록 하자. 환경 설명 local 로컬 개발 환경 먼저 개발을 하려면, 각자 개발자 PC에 개발 및 테스트 환경이 셋업 되어 있어야 한다. 각 개발자마다, 설치된 서버 환경을 local 환경이라고 한다. (예. 각 PC에 MySQL등의 DB와 Tom..
[Hibernate] @Notnull vs @ NotEmpty vs @NotBlank 속성에 null 값을 금지할 때 @Notnull을 많이 사용했었다. 이와 비슷한 annotation이면서 조금씩 차이가 있는 @NotEmpty, @NotBlank가 있는데 그 차이를 알아보자. ==================================================================== 1. @NotNull : CharSequence, Collection, Map or Array의 객체가 null일 수 없다. 그러나 empty는 가능하다. 2. @NotEmpty : CharSequence, Collection, Map or Array의 객체가 null과 empty 값(size > 0)이 될 수 없다 3. @NotBlank : 'String'이 null일 수 없으며, legnt..
[JAVA8] Optional을 이용하여 NullPointException 처리 및 Stram의 사용 JAVA8을 활용하면 복잡하거나 코드가 길어졌던 단점들을 많이 보완할 수 있는 거 같다. 그 중 optional & Stream을 활용하면 좋을 거 같다. 스크랩 : https://medium.com/@joongwon/optional을-이용하여-java의-nullpointerexception을-피해보자-e9cac719a2d6 https://github.com/gonghojin/spring-webservice/blob/master/src/main/java/com/gongdel/webservice/dto/post/PostMainResponseDto.java ===================================================================그렇다면 forEach문을 이용해..