작년에 취준하면서 빠르게 훑었었던 책인데 다시 보니 진짜 목차 하나하나 버릴 것이 없어
한번 처음부터 끝까지 실습하며 복습하기로 했다.
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 | 이동욱 | 프리렉 - 교보문고 (kyobobook.co.kr)
목차는 이렇다.
01장 인텔리제이로 스프링 부트 시작하기
_1.1 인텔리제이 소개
_1.2 인텔리제이 설치하기
_1.3 인텔리제이 커뮤니티에서 프로젝트 생성하기
_1.4 그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기
_1.5 인텔리제이에서 깃과 깃허브 사용하기
02장 스프링 부트에서 테스트 코드를 작성하자
_2.1 테스트 코드 소개
_2.2 Hello Controller 테스트 코드 작성하기
_2.3 롬복 소개 및 설치하기
_2.4 Hello Controller 코드를 롬복으로 전환하기
03장 스프링 부트에서 JPA로 데이터베이스 다뤄보자
_3.1 JPA 소개
__Spring Data JPA
__실무에서 JPA
__요구사항 분석
_3.2 프로젝트에 Spring Data Jpa 적용하기
_3.3 Spring Data JPA 테스트 코드 작성하기
_3.4 등록/수정/조회 API 만들기
_3.5 JPA Auditing으로 생성시간/수정시간 자동화하기
__LocalDate 사용
__JPA Auditing 테스트 코드 작성하기
04장 머스테치로 화면 구성하기
_4.1 서버 템플릿 엔진과 머스테치 소개
__머스테치란
__머스테치 플러그인 설치
_4.2 기본 페이지 만들기
_4.3 게시글 등록 화면 만들기
_4.4 전체 조회 화면 만들기
_4.5 게시글 수정, 삭제 화면 만들기
__게시글 수정
__게시글 삭제
05장 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기
_5.1 스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트
_5.2 구글 서비스 등록
_5.3 구글 로그인 연동하기
__스프링 시큐리티 설정
__로그인 테스트
_5.4 어노테이션 기반으로 개선하기
_5.5 세션 저장소로 데이터베이스 사용하기
_5.6 네이버 로그인
__네이버 API 등록
__스프링 시큐리티 설정 등록
_5.7 기존 테스트에 시큐리티 적용하기
06장 AWS 서버 환경을 만들어보자 - AWS EC2
_6.1 AWS 회원 가입
_6.2 EC2 인스턴스 생성하기
_6.3 EC2 서버에 접속하기
_6.4 아마존 리눅스 1 서버 생성 시 꼭 해야 할 설정들
07장 AWS에 데이터베이스 환경을 만들어보자 - AWS RDS
_7.1 RDS 인스턴스 생성하기
_7.2 RDS 운영환경에 맞는 파라미터 설정하기
_7.3 내 PC에서 RDS에서 접속해 보기
__Database 플러그인 설치
_7.4 EC2에서 RDS에서 접근 확인
08장 EC2 서버에 프로젝트를 배포해 보자
_8.1 EC2에 프로젝트 Clone 받기
_8.2 배포 스크립트 만들기
_8.3 외부 Security 파일 등록하기
_8.4 스프링 부트 프로젝트로 RDS 접근하기
__RDS 테이블 생성
__프로젝트 설정
__EC2 설정
_8.5 EC2에서 소셜 로그인하기
09장 코드가 푸시되면 자동으로 배포해 보자 - Travis CI 배포 자동화
_9.1 CI & CD 소개
_9.2 Travis CI 연동하기
__Travis CI 웹 서비스 설정
__프로젝트 설정
_9.3 Travis CI와 AWS S3 연동하기
__AWS Key 발급
__Travis CI에 키 등록
__S3 버킷 생성
__.travis.yml 추가
_9.4 Travis CI와 AWS S3, CodeDeploy 연동하기
__EC2에 IAM 역할 추가하기
__CodeDeploy 에이전트 설치
__CodeDeploy를 위한 권한 생성
__CodeDeploy 생성
__Travis CI, S3, CodeDeploy 연동
_9.5 배포 자동화 구성
__deploy.sh 파일 추가
__.travis.yml 파일 수정
__appspec.yml 파일 수정
__실제 배포 과정 체험
_9.6 CodeDeploy 로그 확인
10장 24시간 365일 중단 없는 서비스를 만들자
_10.1 무중단 배포 소개
_10.2 엔진엑스 설치와 스프링 부트 연동하기
_10.3 무중단 배포 스크립트 만들기
__profile API 추가
__real1, real2 profile 생성
__엔진엑스 설정 수정
__배포 스크립트들 작성
_10.4 무중단 배포 테스트
11장 1인 개발 시 도움이 될 도구와 조언들
_11.1 추천 도구 소개
__댓글
__외부 서비스 연동
__방문자 분석
__CDN
__이메일 마케팅
_11.2 1인 개발 팁
_11.3 마무리
딱 자바 + 스프링부트를 쓰는 신입 백엔드 개발자 / 취준생이 공부하기 좋은 것들만 모아뒀다.
베스트셀러인 이유가 있다.
한 2주간 주말위주로 다시 공부했는데 역시 다시 보기 잘했다고 느꼈다.
😲 다시 짚고 넘어갈 것 📌
Chap 2 테스트코드
✅ TDD : 테스트 주도 개발
✅ 단위 테스트 코드
- 장점
- 코드를 수정할 때마다 서버를 켰다 껐다할 필요 없음
- System.out.println( ) 같은 검증 필요 없이 자동 검증
- 새 기능 추가될시 기존 기능이 잘 작동되는지 보장
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
@RunWith(SpringRunner.class) // Spring boot test와 JUnit 사이 연결자
@WebMvcTest(controllers = HelloController.class) // Web 위주의 test임 선언 -> Controller만 테스트함
public class HelloControllerTest {
@Autowired
private MockMvc mvc; // HTTP 요청, web API test에 사용
@Test
public void hello가_리턴됨() throws Exception {
String hello = "hello";
mvc.perform(get("/hello")) // get 요청 검증
.andExpect(status().isOk()) // http 요청 결과 상태 검증 -> 200 OK?
.andExpect(content().string(hello)); // 요청 응답 내용 검증
}
}
|
cs |
- given-when-then
- given : 준비 > Mock 객체 준비
- when : 테스트 실행
- then : 테스트 결과 검증
Chap 3 JPA
- JPA와 Spring Data JPA
- JPA ← Hibernate ← Spring Data JPA
- Spirng Data JPA
- 구현체 교체의 용이성
- 저장소 교체의 용이성
- Service의 역할
- 트랜잭션
- 도메인관 순서 보장
비즈니스 로직 처리
비즈니스 처리 담당은 Service가 아닌 Domain
Entity 클래스는 DB와 소통하는 핵심 클래스로 controller에서 사용할 dto와 역할 분리 필요
View Layer ↔ DB Layer
- 더티 체킹 (dirty checking)
: 영속성 컨텍스트 안의 엔티티를 대상으로 일어나는 변경 감지
💡 JPA EntityManager 활성화 상태로 트랜잭션 안에서 가져온 데이터는 영속성 컨텍스트가 유지된 상태
→ 해당 데이터 값 변경하면 트랜잭션 끝나는 시점에 해당 테이블에 update
Entity 객체 값 변경시 별도의 Update 쿼리 요청 필요 없음
-JPA Auditing : Entity 생성시간, 수정시간 자동화 (상위 클래스)
1
2
3
4
5
6
7
8
9
10
11
|
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@CreatedDate
private LocalDate createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
|
cs |
Chap 5 스프링 시큐리티 & OAuth2
- SecurityConfig : 스프링 시큐리티 설정 + OAuth2.0 설정 > http로 들어오는 요청 처리
- CustomOAuth2UserService : OAuth2 로그인 성공시 userService > customOAuth2UserService에서 기능하도록 연결
-@LoginUser : 어노테이션 클래스로 관리하며 중복되는 코드 제거
- LoginUserArgumentResolver : 조건에 맞는 경우 메소드가 있다면 파라미터로 넘김
- supportsParameter : 들어온 파라미터를 resolver가 지원하는지 판단 t/f
- resolveArgument : 파라미터에 전달할 객체 생성
- WebConfig : LoginUserArgumentResolver를 스프링에서 인식할 수 있도록 추가 설정
Chap 10 Nginx
-Nginx 구동 과정
1) 사용자가 서비스 주소로 접속 (80 / 443)
2) nginx는 사용자의 요청을 받아 현재 연결된 스프링 부트1로 요청 전달 (8081)
3) 스프링부트2는 nginx와 연결된 상태 X
4) 배포가 끝나고 스프링부트2가 아직 정상 구동 중이면 nginx reload 명령어를 통해 8082를 보게 함
5) 또 다시 배포가 필요하다면 스프링부트1로 배포
6) 배포가 끝났다면 nginx가 스프링부트1을 보게 변경하고 nginx reload 명령어 실행
7) 이후 요청부터 nginx가 스프링부트1로 요청 전달
이 책의 아쉬운 점이라면 상세 설명이 조금 부족하다는 점이다.
아예 스프링부트 + JPA + AWS 등이 처음인 사람에게는 추천하지 않고
조금이라도 접해본 초급자에게 추천한다.
'Hello_World > IT도서' 카테고리의 다른 글
[책리뷰] 견고한 데이터 엔지니어링 (0) | 2024.07.19 |
---|---|
[책리뷰] 개발자의 글쓰기 (0) | 2022.10.12 |
2021년 나를 거쳐간 기술서적들 (2) | 2021.12.16 |
[책리뷰]한 권으로 그리는 컴퓨터 과학 로드맵 (0) | 2020.11.23 |
[책리뷰]누구나 쉽게 SQL (SQL이론서 추천/ 데이터베이스/ DB입문/비전공자/입문자/오라클) (0) | 2020.08.07 |
댓글