'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 8.1 EC2에 프로젝트 Clone 받기 EC2에 Git을 설치하고 프로젝트를 Clone $ sudo yum install git $ git --version $ mkdir ~/app && mkdir ~/app/step1 $ cd ~/app/step1 $ git clone [Git 저장소] $ cd [Git 저장소] $ chmod 755 gradlew// gradlew에 실행 권한 부여 $ ./gradlew test 8.2 배포 스크립트 만들기 배포란 작성한 코드를 실제 서버에 반영하는 것을 말한다. git clone 혹은 git pull을 통해 새 버전의 프로젝트 받음 Gradle이나 Maven을 통해 프로젝트 테스트와 빌드 ..
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 데이터베이스를 구축하고 EC2 서버와 연동을 해보자. 직접 데이터베이스를 설치해서 다루게 되면 모니터링, 알람, 백업, HA 구성 등을 모두 직접 해야 한다. RDS ASW에서는 위에서 말한 작업을 모두 지원하는 관리형 서비스인 RDS(Relational Database Service)를 제공한다. RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스다. 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능한 장점이 있..
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 클라우드 서비스는 쉽게 말하면 인터넷을 통해 서버, 스토리지(파일 저장소), 데이터베이스, 네티워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다. 클라우드의 형태 Iaas (Infrastructure as a Service) 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서비스 AWS의 EC2, S3 등 Paas (Platform as a Service) Iaas에서 한번 더 추상화한 서비스 많은 기능이 자동화 되어 있음 AWS의 Beanstalk..
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 지금까지 CRUD API 작성과 머스테치를 통해 간단한 게시판 화면을 구현했다. 이제 로그인 기능을 만들어 보자. 프론트엔드에서 URI 이동 -> HTTP 요청 받음 -> HTTP 요청 컨트롤러에 전송-> 서비스에서 로직 처리, 반환 스프링 시큐리티(Spring Secourity)는 인증(Authentication)과 인가(Authorization, 권한 부여) 기능을 가진 프레임워크다 이번 장에서는 스프링 시큐리티와 OAuth 2.0을 구현한 구글 로그인을 연동하여 로그인 기능을 만들어 보자. 5.1. 스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트 많은 서비스에서 로그인 기능을 소셜 로그인 기능을 사용한다. 왜 그럴..
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 머스테치(Mustache)를 통해 화면 영역을 개발해보자. 서버 템플릿 엔진과 클라이언트 템플릿 엔진의 차이 머스테치를 통해 기본적인 CRUD 화면 개발 4.1 서버 템플릿 엔진과 머스테치 소개 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 뜻한다. 서버 템플릿 엔진: JSP, Freemarker, Thymeleaf ... 클라이언트 템플릿 엔진: React, Vuew ... 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java 코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달한다. Vue.js나 React.js를 이용한 SPA(Single Page App..
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. ORM은 객체를 매핑하는 것이고, SQL Mapper는 쿼리를 매핑한다. JPA 소개 현업 프로젝트 대부분이 애플리케이션 코드보다 SQL이 더 많다. 이는 관계형 데이터베이스가 SQL만 인식할 수 있기 때문인데, 각 테이블마다 기본적인 CRUD SQL을 매번 생성해야 한다. insert into user (id, name, ...) values (...); select * from user where ...; update user set ... where ...; delete from user where ...; 이러한 SQL들을 반복적으로 수백 개의 테이블의 수 배의 SQL을 만들고 유지보수해야 한다. 이런 반복 작업의 문제 ..
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 정리한 글입니다. 테스트 코드 Red: 항상 실패하는 테스트를 먼저 작성하고 Green: 테스트가 통과하는 프로덕션 코드를 작성하고 Refactor: 테스트가 통과하면 프로덕션 코드를 리팩토링합니다. TDD: 테스트가 주도하는 개발로 먼저 테스트 코드를 작성하는 것부터 시작한다. 단위 테스트: TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것. 이번 장에서 단위 테스트 코드를 배운다. 단위 테스트 코드를 작성함으로써 얻는 이점 개발단계 초기에 문제를 발견하게 도와준다. 개발자가 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있다. 기능에 대한 불확실성을 감소시킬 수 있다. 시스템에 대한 실제..
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 인텔리제이에서 프로젝트 생성하는 방법 프로젝트 생성 그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기 스프링 이니셜라이저를 써도 되지만 처음이니 build.gradle에 직접 코드를 추가하도록 한다. 책 내용과 달리 gradle6을 사용하고 있으므로 조금 수정하여 추가한다. plugins { id 'org.springframework.boot' version '2.4.1' // RELEASE 삭제 id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } group 'org.blabla~' // group 이름이 자동으로 입력되어있다. version '1..