책 소개
요약
다수의 사용자를 지원하는 Todo 웹 애플리케이션을 구현하고 배포한다. 또한 현장에서 많이 사용하는 프론트엔드와 백엔드 서버가 분리된 아키텍처(Decoupled Architecture)를 구현한다. 또한 배포 시 단순히 로컬 환경이나 임시 HTTP 서버로 배포하는 데 그치지 않고, HTTPS 인증서 설정, 로드 밸런서, 오토 스케일링 그룹 등 AWS 클라우드 서비스를 사용해 실제 서비스 운영에 필요한 배포, 스케일링 기술을 전달한다. 이 책을 통해 스프링 부트와 리액트를 이용해 애플리케이션을 구현하면서 확장 가능한 아키텍처를 구축하고 운영해볼 수 있다. 2판에서는 OAuth 2.0를 이용해 소셜 로그인 기능을 구현하는 내용을 추가했다.
이 책에서 다루는 내용
◆ REST 백엔드, React 프론트엔드, AWS를 이용한 간단한 Todo 애플리케이션 개발
◆ 스프링 부트, 그래들, 메이븐 리포지터리, 롬복, JPA 등 REST API 개발에 필요한 내용
◆ React.js의 원리와 프론트엔드 개발에 필요한 기초 지식
◆ React.js와 같은 싱글 페이지 애플리케이션(Single Page Application)의 동작 방식
◆ JWT를 이용한 인증 이론과 구현
◆ AWS 일라스틱 빈스톡을 이용해 애플리케이션을 배포하는 방법 및 배포 시 사용되는 EC2, 오토 스케일링 그룹, 로드 밸런서, RDS 등의 리소스
◆ Route 53에서 DNS를 등록하는 방법과 DNS를 로드 밸런서로 연결하는 방법
◆ OAuth 2.0를 이용해 소셜로그인 기능 구현
이 책의 대상 독자
◆ 스프링 MVC를 개발할 줄 알지만 다른 아키텍처를 경험해 보고 싶은 학생/주니어 개발자
◆ 프론트엔드와 백엔드가 분리된 아키텍처를 구축해 보고 싶은 학생/주니어 개발자
◆ 실제 웹 서비스를 작성하고 운영해 보고 싶은 학생/주니어 개발자
◆ AWS에서 웹 서비스를 운영해 보고자 하는 학생/주니어 개발자
◆ 서비스 스케일에 관심이 있는 학생/주니어 개발자
◆ 실무에서 많이 사용하는 아키텍처 패턴에 관심있는 학생/주니어 개발자
상세 이미지
목차
목차
- 1장. 개발을 시작하기 전에
- 1.1 이 책을 읽는 방법
- 1.1.1 예제와 실습 코드
- 1.1.2 소스 코드
- 1.1.3 커맨드라인 인터페이스
- 1.1.4 정리
- 1.2 Todo 웹 애플리케이션
- 1.2.1 Todo 웹 애플리케이션 기능
- 1.2.2 Todo 웹 애플리케이션 아키텍처
- 1.2.3 기술과 구현 사이
- 1.2.4 정리
- 1.3 배경지식
- 1.3.1 하이퍼텍스트 트랜스퍼 프로토콜
- 1.3.2 자바스크립트 오브젝트 노테이션
- 1.3.3 서버란?
- 1.3.4 정적 웹 서버
- 1.3.5 동적 웹 서버
- 1.3.6 자바 서블릿 컨테이너/엔진
- 1.3.7 정리
- 2장. 백엔드 개발
- 2.1 백엔드 개발 환경 설정
- 2.1.1 Amazon Corretto 11 설치
- 2.1.2 이클립스 설치
- 2.1.3 스프링 프레임워크와 의존성 주입
- 2.1.4 스프링 프레임워크와 디스패쳐 서블릿
- 2.1.5 스프링 부트 프로젝트 설정
- 2.1.6 메인 메서드와 @SpringBootApplication
- 2.1.7 빌드 자동화 툴: Gradle과 라이브러리
- 2.1.8 디펜던시 라이브러리 추가
- 2.1.9 롬복
- 2.1.10 포스트맨 API 테스트
- 2.1.11 정리
- 2.2 백엔드 서비스 아키텍처
- 2.2.1 레이어드 아키텍처
- 2.2.2 모델, 엔티티, DTO
- 2.2.3 REST API
- 2.2.4 컨트롤러 레이어 : 스프링 REST API 컨트롤러
- 2.2.5 서비스 레이어 : 비즈니스 로직
- 2.2.6 퍼시스턴스 레이어 : 스프링 데이터 JPA
- 2.2.7 정리
- 2.3 서비스 개발 및 실습
- 2.3.1 Create Todo 구현
- 2.3.2 Retrieve Todo 구현
- 2.3.3 Update Todo 구현
- 2.3.4 Delete Todo 구현
- 2.3.5 정리
- 3장. 프론트엔드 개발
- 3.1 프론트엔드 개발 환경 설정
- 3.1.1 Node
- 3.1.2 비주얼 스튜디오 코드 설치
- 3.1.3 프론트엔드 애플리케이션 생성
- 3.1.4 material-ui 패키지 설치
- 3.1.5 브라우저의 작동 원리
- 3.1.6 React
- 3.1.7 정리
- 3.2 프론트엔드 서비스 개발
- 3.2.1 Todo 리스트
- 3.2.2 Todo 추가
- 3.2.3 Todo 삭제
- 3.2.4 Todo 수정
- 3.2.5 정리
- 3.3 서비스 통합
- 3.3.1 CORS
- 3.3.2 Effect Hook을 이용한 Todo 리스트 초기화
- 3.3.3 fetch
- 3.3.4 정리
- 4장. 인증 백엔드 통합
- 4.1 REST API 인증 기법
- 4.1.1 Basic 인증
- 4.1.2 토큰 기반 인증
- 4.1.3 JSON 웹 토큰
- 4.1.4 정리
- 4.2 User 레이어 구현
- 4.2.1 UserEntity
- 4.2.2 UserRepository
- 4.2.3 UserService
- 4.2.4 UserController
- 4.2.5 정리
- 4.3 스프링 시큐리티 통합
- 4.3.1 JWT 생성 및 반환 구현
- 4.3.2 스프링 시큐리티와 서블릿 필터
- 4.3.3 JWT를 이용한 인증 구현
- 4.3.4 스프링 시큐리티 설정
- 4.3.5 TodoController에서 인증된 유저 사용하기
- 4.3.6 패스워드 암호화
- 4.3.7 정리
- 5장. 인증 프론트엔드 통합
- 5.1 라우팅
- 5.1.1 react-router-dom
- 5.1.2 react-router-dom 라이브러리가 필요한 이유
- 5.1.3 로그인 컴포넌트
- 5.1.5 정리
- 5.2 로그인 페이지
- 5.2.1 로그인을 위한 API 서비스 메서드 작성
- 5.2.2 로그인에 성공
- 5.2.3 정리
- 5.3 로컬 스토리지를 이용한 액세스 토큰 관리
- 5.3.1 로컬 스토리지
- 5.3.2 액세스 토큰 저장
- 5.3.3 정리
- 5.4 로그아웃과 글리치 해결
- 5.4.1 로그아웃 서비스
- 5.4.2 네비게이션 바와 로그아웃
- 5.4.3 UI 글리치 해결
- 5.4.4 정리
- 5.5 계정 생성 페이지
- 5.5.1 계정 생성 로직
- 5.5.2 정리
- 6장. 프로덕션 배포
- 6.1 서비스 아키텍처
- 6.1.1 EC2
- 6.1.2 라우트 53 - DNS
- 6.1.3 애플리케이션 로드 밸런서
- 6.1.4 오토 스케일링 그룹
- 6.1.5 VPC와 서브넷
- 6.1.6 일래스틱 빈스톡
- 6.1.7 정리
- 6.2 AWS CLI와 EB CLI 설치
- 6.2.1 AWS 계정 생성
- 6.2.2 파이썬 설치
- 6.2.3 AWS CLI 설치
- 6.2.4 AWS CLI 설정
- 6.2.5 pip을 이용해 EB CLI 설치
- 6.2.6 윈도우 사용자를 위한 환경 변수 설정
- 6.2.7 정리
- 6.3 AWS 일래스틱빈스톡을 이용한 백엔드배포
- 6.3.1 일래스틱 빈스톡이란?
- 6.3.2 eb init을 이용해 애플리케이션 생성
- 6.3.3 백엔드 애플리케이션 설정
- 6.3.4 eb create를 이용해 AWS에 환경 생성
- 6.3.5 애플리케이션 배포
- 6.3.6 환경 구성
- 6.3.7 엔드포인트 테스팅
- 6.3.8 프론트엔드 통합 테스팅
- 6.3.9 정리
- 6.4 AWS 일래스틱빈스톡을 이용한 프론트엔드 배포
- 6.4.1 eb init을 이용해 애플리케이션 생성
- 6.4.2 eb create을 이용한 애플리케이션 배포
- 6.4.3 크로스-오리진 문제
- 6.4.4 정리
- 6.5 Route53 도메인 설정
- 6.5.1 도메인 구매
- 6.5.2 호스팅 영역 생성
- 6.5.3 백엔드 재배포
- 6.5.4 프론트엔드 재배포
- 6.5.5 정리
- 6.6 백엔드/프론트엔드 AWS Certificate Manager를 이용한 https 설정
- 6.6.1 인증서 요청
- 6.6.2 백엔드 애플리케이션 HTTPS 설정
- 6.6.3 프론트엔드 애플리케이션 HTTPS 설정
- 6.6.3 정리
- 7장. OAuth 2.0와 소셜 로그인 개발
- 7.1 OAuth 2.0
- 7.1.1 다른 애플리케이션과의 통합
- 7.1.2 OAuth 2.0 인가 프레임워크
- 7.1.3 OAuth 2.0 흐름
- 7.1.4 정리
- 7.2 소셜 로그인 백엔드 구현
- 7.2.1 소셜 로그인 사이트에서 클라이언트 애플리케이션 생성하기
- 7.2.2 OAuth 2.0 라이브러리 추가
- 7.2.3 application-dev.yaml에서 OAuth 2.0 설정
- 7.2.4 Todo 백엔드 OAuth 2.0 엔드포인트 설정..
- 7.2.5 소셜 로그인 후 자동으로 회원가입
- 7.2.6 Todo 애플리케이션 토큰 발행
- 7.2.7 정리
- 7.3 소셜 로그인 프론트엔드 구현
- 7.3.1 백엔드 AuthenticationEntryPoint 설정
- 7.3.2 소셜 로그인 엔드포인트 추가
- 7.3.3 소셜 로그인 기능 추가
- 7.3.4 프론트엔드로 Bearer 토큰 전달하기
- 7.3.5 임의의 프론트엔드로 토큰 전달하기
- 7.3.6 정리
도서 오류 신고
정오표
정오표
[p.40 : 6행]
Javax.servlet.httpHttpServlet
->
javax.servlet.http.HttpServlet
[p.185 : 아래서 6행]
임의의 Todo 리스트는 각 Todo마다 다른 타이들을 가지고 있다.
->
임의의 Todo 리스트는 각 Todo마다 다른 타이틀을 가지고 있다.