React.js, 스프링 부트, AWS로 배우는 웹 개발 101 [SPA, REST API 기반 웹 애플리케이션 개발]
- 지은이김다정
- ISBN : 9791161755656
- 35,000원
- 2021년 09월 30일 펴냄
- 페이퍼백 | 424쪽 | 188*235mm
- 시리즈 : 웹 프로페셔널
판매처
개정판책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/fsoftwareengineer/todo-application
요약
다수의 사용자를 지원하는 Todo 웹 애플리케이션을 구현하고 배포한다. 또한 현장에서 많이 사용하는 프론트엔드와 백엔드 서버가 분리된 아키텍처(Decoupled Architecture)구현한다. 또한 배포 시 단순히 로컬환경이나 임시의 HTTP 서버로 배포하는 데 그치지 않고, HTTPS 인증서 설정, 로드발란서, 오토스케일링 그룹 등 AWS 클라우드 서비스를 사용해 실제 서비스 운영에 필요한 배포, 스케일링 기술을 전달한다. 이 책을 통해 스프링부트와 리액트를 이용해 애플리케이션을 구현하면서 확장 가능한 아키텍처를 구축하고 운영해 볼 수 있다.
이 책에서 다루는 내용
■ REST 백엔드, React 프론트엔드, AWS를 이용한 간단한 Todo 애플리케이션 개발
■ 스프링 부트, 그래들, 메이븐 리포지터리, 롬복, JPA 등 REST API 개발에 필요한 내용 설명
■ React.js의 원리와 프론트엔드 개발에 필요한 기초 지식 설명
■ React.js와 같은 싱글 페이지 애플리케이션Single Page Application의 동작 방식 설명
■ JWT를 이용한 인증 이론과 구현을 충실히 설명
■ AWS 일라스틱 빈스톡을 이용해 애플리케이션을 배포하는 방법 및 배포 시 사용되는 EC2, 오토 스케일링 그룹, 로드 밸런서, RDS, 등의 리소스 설명
■ Route 53에서 DNS를 등록하는 방법과 DNS를 로드 밸런서로 연결하는 방법 설명
이 책의 대상 독자
■ 스프링 MVC를 개발할 줄 알지만 다른 아키텍처를 경험해 보고 싶은 학생/주니어 개발자
■ 프론트엔드와 백엔드가 분리된 아키텍처를 구축해 보고 싶은 학생/주니어 개발자
■ 실제 웹 서비스를 작성하고 운영해 보고 싶은 학생/주니어 개발자
■ AWS에서 웹 서비스를 운영해 보고자 하는 학생/주니어 개발자
■ 서비스 스케일에 관심이 있는 학생/주니어 개발자
■ 실무에서 많이 사용하는 아키텍처 패턴에 관심있는 학생/주니어 개발자
목차
목차
- 1장. 개발을 시작하기 전에
- 1.1 Todo 웹 애플리케이션
- 1.1.1 Todo 웹 애플리케이션 기능
- 1.1.2 Todo 웹 애플리케이션 아키텍처
- 1.1.3 기술과 구현 사이
- 1.1.4 정리
- 1.2 배경 지식
- 1.2.1 하이퍼텍스트 트랜스퍼 프로토콜
- 1.2.2 자바스크립트 오브젝트 노테이션
- 1.2.3 서버란?
- 1.2.4 정적 웹 서버
- 1.2.5 동적 웹 서버
- 1.2.6 자바 서블릿 컨테이너/엔진
- 1.2.7 정리
- 2장. 백엔드 개발
- 2.1 백엔드 개발 환경 설정
- 2.1.1 자바 8 설치
- 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 componentDidMount
- 3.3.2 CORS
- 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.4 접근 거부 시 로그인 페이지로 라우팅하기
- 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.4 정리
- 맺음말