목록책/스프링부트와 AWS로 혼자 구현하는 웹 서비스 (7)
어디까지 갈 수 있을까?
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/elXqcD/btq3OdJNUSb/phfUiij2NRrrLvp6R5kx01/img.png)
지금까지의 서비스는 새로운 Jar가 실행되기 전까진 기존 Jar를 종료시켜 놓기 때문에 서비스가 중단된다. 이를 해결하기 위해 우리는 엔진엑스를 이용해 '무중단 배포' 를 해볼 것이다 엔진엑스의 기능 중 리버스 프록시는 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 행위를 말한다 무중단 배포의 운영과정을 요약하자면, 일단 포트를 두 개 둔다. 예를 들어 현재 엔진엑스가 8081포트와 연결돼있으면 8082 포트에서 신규 배포 진행 후 엔진엑스가 바라보는 포트를 8082 포트로 바꾸고, 또 신규 배포가 필요하면 8081 포트에서 신규 배포 진행 후 엔진엑스가 바라보는 포트는 8081로 바꾸면 된다. 사용자는 엔진엑스가 바라보는 포트의 프로그램을 사용하게 된다 엔진엑스 설치와 스프링 부트 연동하기 EC2 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lDHA2/btq2N193tnN/rltRZyKBWZdopWwC0X5eW1/img.png)
EC2에 프로젝트 Clone 받기 EC2에 접속해서 깃 설치 sudo yum install git git --version 프로젝트를 저장할 디렉터리 생성 mkdir ~/app && mkdir ~/app/step1 cd ~/app/step1 git clone 깃허브 주소 cd 프로젝트명 ll 프로젝트 코드들이 모두 있으면 성공 코드들이 잘 수행되는지 테스트로 검증 ./gradlew test gradlew 실행 권한이 없다고 뜨면 chmod +x ./gradlew 배포 스크립트 만들기 배포 : 작성한 코드를 실제 서버에 반영하는 것 vim ~/app/step1/deploy.sh #!/bin/bash REPOSITORY=/home/ec2-user/app/step1 PROJECT_NAME=spring_web_..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/murIV/btq18EPJkWl/T8bNdYNRYiY8Cr8T3RD5cK/img.png)
IaaS(Infrastructure as a Service) IT 인프라 대여(가상머신, 스토리지, 네트워크, 운영체제 등) AWS EC2 PaaS(Platform as a Service) IaaS를 한 번 더 추상화 빈스톡 SaaS(Software as a Service) 소프트웨어 서비스 구글 드라이브 AWS EC2 인스턴스 EC2(Elastic Compute Cloud), AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버, 가상머신 aws.amazon.com/ko/portal.aws.amazon.com/billing/signup#/start 30GB까지 프리티어 이용 가능 EC2의 이름 HTTPS의 기본포트는 443, HTTP의 기본 포트는 80 지정된 IP에서만 SSH 접속이 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bHNLFx/btq0ZMfSqIx/ORFs9fXnn0K0YrDknA9KS1/img.jpg)
스프링 부트 1.5와 스프링 부트 2.0에서 시큐리티 설정의 차이점 스프링 시큐리티를 이용한 구글/네이버 로그인 연동 방법 세션 저장소로 톰캣/데이터베이스/메모리DB가 있으며 이 중 데이터베이스를 사용하는 이유 ArgumentResolver를 이용하면 어노테이션으로 로그인 세션 정보를 가져올 수 있다는 것 스프링 시큐리티 적용 시 기존 테스트 코드에서 문제 해결 방법 스프링 시큐리티 스프링 기반 애플리케이션의 보안(인증(로그인), 권한부여(guest, user, member, admin 구분))을 담당하는 프레임워크 스프링 시큐리티와 스프링 시큐리티 OAuth2 클라이언트 * Oauth 란? Open Authorization, Service Provider(구글 페이스북, 카카오 등)에서 제공하는 Aut..
#게시글 저장(도메인) -Posts(엔티티) -PostsRepository #게시글 저장 테스트 @After cleanup(){deleteAll} 리포지토리에 엔티티 객체 저장하고 잘 불러와지는지 테스트 #게시글 등록/수정/조회 API 만들기 Request 데이터 받을 Dto API 요청 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장 Service save()는 추가 뿐만 아니라 수정에도 사용한다. save()는 이 객체가 새로운 객체인지 기존 객체인지 판단하여, 새로운 객체가 아닌경우 EntityManager의 merge쪽으로 보낸다. repository.save() 하면 엔티티 객체 반환 delete말고 모두 entity 관련 객체를 반환한다 Controller에서 서비스에 Dto..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cLDn41/btqZ3go8Sxz/cpyfxZ4hxpWPJG9tnog8H0/img.png)
템플릿 엔진 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 스프링에서 권장하는 템플릿 엔진에는 머스테치, Thymeleaf가 있다 서버 템플릿 엔진과 클라이언트 템플릿 엔진 리액트, 뷰 - 클라이언트 템플릿 엔진 서버에서 일단 빈 html을 보내고 js를 다 읽고 화면을 그림 단 : 첫 화면을 보기까지 걸리는 시간이 길다 Jsp, Freemarker - 서버 템플릿 엔진 서버에서 모든 데이터를 만들어 클라이언트에 html만 보냄 기본 페이지 만들기 1. build.gradle에 의존성 추가 compile 'org.springframework.boot:spring-boot-starter-mustache' 2. index.mustache 생성 더보기 스프링 부트로 시작하는 웹서비스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/JR7BG/btqZ1Jj2S8g/WGZfbhj4qbkY1iMzrHXJYK/img.png)
패키지 이름 소문자로 클래스, 인터페이스 이름 파스칼 표기법 변수명 카멜 표기법 1. 테스트 코드 TDD와 단위 테스트 차이 TDD(Test Driven Development) : 테스트 주도 개발, 테스트 코드를 먼저 작성하는 것 단위 테스트 : 기능 단위의 테스트 코드를 작성하는 것을 말함 단위 테스트를 하면 빠른 피드백을 얻을 수 있고 자동검증이 가능해 테스트 코드로 먼저 검증 후 그래도 못 믿겠을 때 프로젝트 실행해 확인하는 것 추천 Applicaiton 클래스 앞으로 만들 프로젝트의 메인클래스 @SpringBootApplication 스프링 Bean 읽기와 생성 가능하게 함, 해당 어노테이션이 있는 위치부터 읽기때문에 항상 프로젝트 최상단에 위치해야 한다. SpringApplication.run..