목록책/스프링부트와 AWS로 혼자 구현하는 웹 서비스 (7)
어디까지 갈 수 있을까?
지금까지의 서비스는 새로운 Jar가 실행되기 전까진 기존 Jar를 종료시켜 놓기 때문에 서비스가 중단된다. 이를 해결하기 위해 우리는 엔진엑스를 이용해 '무중단 배포' 를 해볼 것이다 엔진엑스의 기능 중 리버스 프록시는 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 행위를 말한다 무중단 배포의 운영과정을 요약하자면, 일단 포트를 두 개 둔다. 예를 들어 현재 엔진엑스가 8081포트와 연결돼있으면 8082 포트에서 신규 배포 진행 후 엔진엑스가 바라보는 포트를 8082 포트로 바꾸고, 또 신규 배포가 필요하면 8081 포트에서 신규 배포 진행 후 엔진엑스가 바라보는 포트는 8081로 바꾸면 된다. 사용자는 엔진엑스가 바라보는 포트의 프로그램을 사용하게 된다 엔진엑스 설치와 스프링 부트 연동하기 EC2 ..
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_..
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 접속이 ..
스프링 부트 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..
템플릿 엔진 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 스프링에서 권장하는 템플릿 엔진에는 머스테치, Thymeleaf가 있다 서버 템플릿 엔진과 클라이언트 템플릿 엔진 리액트, 뷰 - 클라이언트 템플릿 엔진 서버에서 일단 빈 html을 보내고 js를 다 읽고 화면을 그림 단 : 첫 화면을 보기까지 걸리는 시간이 길다 Jsp, Freemarker - 서버 템플릿 엔진 서버에서 모든 데이터를 만들어 클라이언트에 html만 보냄 기본 페이지 만들기 1. build.gradle에 의존성 추가 compile 'org.springframework.boot:spring-boot-starter-mustache' 2. index.mustache 생성 더보기 스프링 부트로 시작하는 웹서비스..
패키지 이름 소문자로 클래스, 인터페이스 이름 파스칼 표기법 변수명 카멜 표기법 1. 테스트 코드 TDD와 단위 테스트 차이 TDD(Test Driven Development) : 테스트 주도 개발, 테스트 코드를 먼저 작성하는 것 단위 테스트 : 기능 단위의 테스트 코드를 작성하는 것을 말함 단위 테스트를 하면 빠른 피드백을 얻을 수 있고 자동검증이 가능해 테스트 코드로 먼저 검증 후 그래도 못 믿겠을 때 프로젝트 실행해 확인하는 것 추천 Applicaiton 클래스 앞으로 만들 프로젝트의 메인클래스 @SpringBootApplication 스프링 Bean 읽기와 생성 가능하게 함, 해당 어노테이션이 있는 위치부터 읽기때문에 항상 프로젝트 최상단에 위치해야 한다. SpringApplication.run..