Books

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 8장. EC2 서버에 프로젝트를 배포해 보자

'스프링 부트와 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을 통해 프로젝트 테스트와 빌드 ..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 7장. AWS에 데이터베이스 환경을 만들어보자 - AWS RDS

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 데이터베이스를 구축하고 EC2 서버와 연동을 해보자. 직접 데이터베이스를 설치해서 다루게 되면 모니터링, 알람, 백업, HA 구성 등을 모두 직접 해야 한다. RDS ASW에서는 위에서 말한 작업을 모두 지원하는 관리형 서비스인 RDS(Relational Database Service)를 제공한다. RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스다. 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능한 장점이 있..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 6장. AWS 서버 환경을 만들어보자 - AWS EC2

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 클라우드 서비스는 쉽게 말하면 인터넷을 통해 서버, 스토리지(파일 저장소), 데이터베이스, 네티워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다. 클라우드의 형태 Iaas (Infrastructure as a Service) 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서비스 AWS의 EC2, S3 등 Paas (Platform as a Service) Iaas에서 한번 더 추상화한 서비스 많은 기능이 자동화 되어 있음 AWS의 Beanstalk..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 5장. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 지금까지 CRUD API 작성과 머스테치를 통해 간단한 게시판 화면을 구현했다. 이제 로그인 기능을 만들어 보자. 프론트엔드에서 URI 이동 -> HTTP 요청 받음 -> HTTP 요청 컨트롤러에 전송-> 서비스에서 로직 처리, 반환 스프링 시큐리티(Spring Secourity)는 인증(Authentication)과 인가(Authorization, 권한 부여) 기능을 가진 프레임워크다 이번 장에서는 스프링 시큐리티와 OAuth 2.0을 구현한 구글 로그인을 연동하여 로그인 기능을 만들어 보자. 5.1. 스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트 많은 서비스에서 로그인 기능을 소셜 로그인 기능을 사용한다. 왜 그럴..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 4장. 머스테치로 화면 구성하기

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 정리한 글입니다. 머스테치(Mustache)를 통해 화면 영역을 개발해보자. 서버 템플릿 엔진과 클라이언트 템플릿 엔진의 차이 머스테치를 통해 기본적인 CRUD 화면 개발 4.1 서버 템플릿 엔진과 머스테치 소개 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 뜻한다. 서버 템플릿 엔진: JSP, Freemarker, Thymeleaf ... 클라이언트 템플릿 엔진: React, Vuew ... 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java 코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달한다. Vue.js나 React.js를 이용한 SPA(Single Page App..

Books/React.js, 스프링 부트, AWS로 배우는 웹 개발 101

[React.js, 스프링 부트, AWS로 배우는 웹 개발 101] Ch 3.1 프론트엔드 개발 환경 설정

'React.js, 스프링 부트, AWS로 배우는 웹 개발 101'을 읽고 정리한 글입니다. 학습 내용 브라우저의 동작 원리 Node.js SPA와 React.js 실습 내용 브라우저의 개발자 툴 프론트엔드 개발 환경 설정(VS Code) Node.js 설치 NPM 실습 리액트 애플리케이션 생성 및 실행 3.1.1 Node.js와 NPM 설치 Node.js 과거에 자바스크립트는 브라우저 밖에서는 실행할 수 없었다. Node.js는 자바스크립트를 내 컴퓨터에서 실행할 수 있게 해주는 프로그램, 즉 자바스크립트 런타임 환경이다. Node.js는 구글 크롬의 V8 자바스크립트 엔진을 실행한다. 자바스크립트를 브라우저 밖에서 실행할 수 있다는 것은 클라이언트 언어뿐만아니라 서버 언어로도 사용할 수 있다는 뜻이다..

Books/React.js, 스프링 부트, AWS로 배우는 웹 개발 101

[React.js, 스프링 부트, AWS로 배우는 웹 개발 101] Ch 2.3 서비스 개발 및 실습

'React.js, 스프링 부트, AWS로 배우는 웹 개발 101'을 읽고 정리한 글입니다. 실습 내용 Logger 설정 HTTP POST를 이용하는 Create REST API 개발 HTTP GET을 이용하는 Retrieve REST API 개발 HTTP UPDATE를 이용하는 Update REST API 개발 HTTP DELETE를 이용하는 Delete REST API 개발 스프링과 JPA 어노테이션을 기반으로 생성, 검색, 수정, 삭제 API를 작성해보자. 구현 과정은 퍼시스턴스 => 서비스 => 컨트롤러 순으로 한다. 로그 어노테이션 서비스 구현에 앞서 디버깅을 위한 로그 설정을 하자. 가장 간단하게 출력하는 방법이 있지만 기능이 제한적이다. 어떤 로그인 정보를 위한 것이고 어떤 로그는 디버깅을 ..

Books/React.js, 스프링 부트, AWS로 배우는 웹 개발 101

[React.js, 스프링 부트, AWS로 배우는 웹 개발 101] Ch 2.2 백엔드 서비스 아키텍처

'React.js, 스프링 부트, AWS로 배우는 웹 개발 101'을 읽고 정리한 글입니다. 학습 내용 레이어드 아키텍처 패턴 REST 아키텍처 스타일 스프링 어노테이션 JPA와 스프링 Data JPA 실습 내용 Model/Entity와 DTO 클래스 Controller, Service, Persistence 클래스 테스팅용 REST API 레이어드 아키텍처 패턴은 스프링 프로젝트 내부에서 어떻게 코드를 적절히 분리하고 관리할 것이냐에 대한 것이다. 코드를 적절히 분리하고 관리하는 것은 코드 베이스가 커질수록 중요하다. REST 아키텍처 스타일은 클라이언트(브라우저)가 우리 서비스를 이용하려면 어떤 형식으로 요청을 보내고 응답을 받는지에 대한 것이다. 클라이언트는 몇 개의 정해진 메서드로 우리 서비스를 ..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 3장. 스프링 부트에서 JPA로 데이터베이스 다뤄보자

'스프링 부트와 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을 만들고 유지보수해야 한다. 이런 반복 작업의 문제 ..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 2장. 스프링 부트에서 테스트 코드를 작성하자

'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 정리한 글입니다. 테스트 코드 Red: 항상 실패하는 테스트를 먼저 작성하고 Green: 테스트가 통과하는 프로덕션 코드를 작성하고 Refactor: 테스트가 통과하면 프로덕션 코드를 리팩토링합니다. TDD: 테스트가 주도하는 개발로 먼저 테스트 코드를 작성하는 것부터 시작한다. 단위 테스트: TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것. 이번 장에서 단위 테스트 코드를 배운다. 단위 테스트 코드를 작성함으로써 얻는 이점 개발단계 초기에 문제를 발견하게 도와준다. 개발자가 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있다. 기능에 대한 불확실성을 감소시킬 수 있다. 시스템에 대한 실제..

Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 1장. 인텔리제이로 스프링 부트 시작하기

'스프링 부트와 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..

Books/React.js, 스프링 부트, AWS로 배우는 웹 개발 101

[React.js, 스프링 부트, AWS로 배우는 웹 개발 101] Ch 2.1 백엔드 개발 환경 설정

'React.js, 스프링 부트, AWS로 배우는 웹 개발 101'을 읽고 정리한 글입니다. 백엔드 개발을 위해 사용할 도구들은 다음과 같다. 스프링 부트 Gradle Lombok Postman REST Layered Architecture 도구의 사용법을 아는 것도 중요하지만 이 도구들을 사용하는 이유를 아는 것도 중요하다. 이 도구들이 어떤 문제를 해결하는지, 또 어떻게 해결하는지에 대해 알아볼 예정이다. Todo 서비스는 Todo 생성/검색/수정/삭제 라는 네 가지 기본적인 기능을 제공한다. 생성, 검색, 수정, 삭제의 네 가지 기본 기능을 CURD Create, Retrieve, Update, Delete 라고 한다. 이 기능을 REST API의 형태로 구현하고 그 과정에서 아키텍처 디자인, 아키..

또 고민 중
'Books' 카테고리의 글 목록