Thumbnail
지식공유자의 깜짝 할인 중
BEST
개발 · 프로그래밍 백엔드

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 대시보드

(5)
1,009개의 수강평 ∙  17,104명의 수강생

30%

61,600원

88,000원
지식공유자: 김영한
총 24개 수업 (6시간 35분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

중급자를 위해 준비한
[웹 개발, 백엔드] 강의입니다.

스프링 부트와 JPA를 활용해서 API를 개발합니다. 그리고 JPA 극한의 성능 최적화 방법을 학습할 수 있습니다.

✍️
이런 걸
배워요!
스프링 부트와 JPA를 활용해서 API를 개발하는 올바른 방법을 이해합니다.
스프링 부트와 JPA를 활용해서 API 조회 성능을 튜닝하는 방법을 이해합니다.
스프링 부트와 JPA를 활용해서 실무 성능 최적화 방법을 이해합니다.

스프링 부트, 실무에서 잘 쓰고 싶다면? 
복잡한 문제까지 해결하는 힘을 길러보세요.

🚩 본 강의는 로드맵 과정입니다.

  • 본 강의는 자바 백엔드 개발의 실전 코스의 2번째 강의입니다. 스프링 부트와 JPA 실무 완전 정복 로드맵을 먼저 확인해주세요. (링크)

실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화

자바 진영에서는 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 개발하는 것이 세계적인 추세입니다. 그래서 많은 개발자들이 이 두 기술을 학습하고 사용합니다. 하지만 실무의 다양하고 복잡한 상황에 성능까지 고려하면서, 이 기술들을 재대로 활용하는 것은 생각만큼 쉽지 않습니다.

실무에서는 기능을 개발할 줄 아는 단계를 넘어서 기술 문제를 해결할 수 있어야 합니다. 복잡하고, 데이터도 많은 상황에서 성능을 최적화하고, 동시에 유지보수하기 쉬운 애플리케이션을 개발해야 합니다.


강의 목표

1편에서는 웹 애플리케이션을 개발하면서 기능 구현에 초점을 맞추었다면, 2편은 기능 개발을 넘어서 기술 문제를 해결하는데 초점을 맞추었습니다. 제대로 구현하는 방법은 무엇인지, 실무에서 주로 어떤 성능 문제가 있고, 어떻게 해결해야 하는지, 기술 문제를 해결할 수 있게 도와드립니다.

 API 제대로 구현

API 하나를 개발해도 JPA를 사용하면, 엔티티라는 개념이 들어가면서 고민할 거리가 많아집니다. 엔티티를 API에 직접 노출해야 하나? 아니면 별도의 객체를 별도로 만들어서 반환해야 하나? 엔티티를 반환하면 지연 로딩은 어떻게 처리해야 하나? 등등 수 많은 고민을 하게 됩니다. 실무에서 어떻게 구현하는 것이 안전하고, 유지보수하기 좋은 방법인지 실전 노하우를 알려드립니다.

 JPA 극한의 조회 성능 최적화 이해

실무에서는 여러 테이블을 조인해서, 빠르게 데이터를 조회해야 하는 복잡한 상황이 자주 발생합니다. 그런데 여기에 일대다 관계인 컬렉션 데이터도 함께 조회해야 하고, 추가로 페이징까지 처리해야 할 수 있습니다. 그러면 문제가 매우 복잡해져서 단순히 테이블 조인만으로는 문제 해결이 어렵습니다. 이런 복잡한 조회 성능 문제들을 JPA로 어떻게 최적화 하는지, 그리고 한계는 어디까지인지 실전 노하우를 알려드립니다.

 복잡한 예제를 코딩으로 6단계로 나누어 성능 튜닝

성능이 안나오는 API를 직접 개발해보고, 왜 성능이 안나오는지 분석하고, 6단계로 나누어서 단계별로 직접 코딩하면서 튜닝할 수 있게 준비했습니다. 이런 내용을 따라하다 보면 자연스럽게 실무의 복잡한 성능 이슈를 어떻게 대처해야 할지 알 수 있습니다.

 실무 JPA 성능 문제의 90% 해결

이번 강의는 여러분이 실무 JPA 성능 문제의 90%를 해결할 수 있도록 실무에서 정말 자주 발생하는 다양한 성능 문제를 담았습니다. 스프링 부트와 JPA로 진행하는 실무 프로젝트를 보면 기능 구현은 잘하는데, 프로젝트 마지막에 성능이 안나와서 고생하는 개발자 분들을 정말 많이 봤습니다. 그래서 도와드리러 가보면 JPA 성능 최적화를 어떻게 해야 하는지 모르는 분들이 많았습니다.

몇일 밤을 새면서 어떻게든 해결하려고 하는 분 부터, 방법을 모르니 JPA 대신에 SQL을 직접 한땀한땀 작성해서 수 많은 코드를 SQL로 변경하시는 분 까지 정말 다양한 상황을 보았습니다. 그런데 막상 도와드리러 가서 실제 성능이 잘 나오도록 튜닝하는데는 5분이 걸리지 않았습니다. JPA 쿼리 옵션을 조절하고, 약간의 코드만 수정했는데, 몇일 고생을 해도 1시간씩 걸리던 쿼리가 수십초로 줄어드는 것을 본 개발자 분의 표정이 아직도 생생합니다. JPA는 그 이미 그 자체로 다양한 성능 튜닝 옵션을 제공합니다. 따라서 약간의 옵션과 코드 수정만으로 다양한 성능 최적화를 시도할 수 있습니다.

여러분도 이 강의에서 설명하는 내용을 이해하면 90%의 실무 성능 문제를 해결할 수 있습니다.


주요 목차

최근에는 뷰 템플릿을 사용해서 직접 서버에서 HTML을 만들어서 응답하기보다는, API에 JSON 데이터를 실어서 반환하는 경우가 많습니다. 스프링 부트와 JPA를 사용해서 API를 개발할 때 주의할 점과 올바른 설계 방향을 이해하고, 성능까지 고려해서 API를 완성하는 것이 이번 편의 목표입니다.

2편은 1편에서 만든 도메인을 기반으로 REST API를 개발합니다. 그리고 단계적으로 조회용 API의 성능을 최적화 합니다. 이 과정을 통해 실무에서 꼭 필요한 JPA의 조회 쿼리 튜닝과 관련된 부분을 속 시원하게 풀어드립니다.

  • API 개발 기본: 기본적인 등록, 수정, 조회용 REST API를 개발합니다.
  • API 개발 고급: 실무에서 JPA로 조회용 API를 개발할 때, 주의점과 올바른 설계 방향을 알려드립니다. JPA 지연 로딩 이슈를 해결하고, 단계별로 다양한 성능 최적화 방안을 설명합니다.
  • 실무 필수 최적화: 스프링 부트와 JPA를 사용할 때 주의해서 사용하지 않으면 실무에서 장애로 이어질 수 있는 OSIV 내용을 다룹니다.

학습 방법

이 강의는 대부분 실습으로 이루어져 있습니다. 따라서 처음부터 끝까지 본인이 직접 코딩을 하면서 강의를 따라가야 가장 많은 것을 얻을 수 있습니다.

참고로 이 강의는 스프링 부트와 JPA를 어느정도 알고, 간단한 웹 애플리케이션 정도는 개발할 수 있는 분이 대상입니다. 이 분들이 기능 구현을 넘어서 기술적으로 깊이있는 이해를 할 수 있게 도와드리는 것이 목표입니다. 따라서 스프링 부트와 JPA에 대한 이해가 부족하면 1편 강의를 먼저 듣는 것을 권장합니다.

💻 선수 강의를 확인해주세요!

  • 1편에서 설계한 도메인 모델을 기반으로 API를 개발하고, 다양한 성능 최적화 기법을 보여드립니다. 따라서 1편 강의를 듣고 2편 강의를 듣는 것을 권장합니다.

연관 강의

기본편

자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 기반 기술을 이해하는데 필요한 선수 강의입니다.

활용편

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링 부트와 JPA로 실제 웹 애플리케이션을 설계하고 개발합니다.

실전! 스프링 데이터 JPA
기초부터 실무까지 스프링 JPA를 학습합니다.

실전! Querydsl
Querydsl을 통해 복잡한 쿼리와 동적 쿼리 문제를 해결합니다.

참고 도서

책은 더 깊은 내용을 공부하고 싶은 분들을 위한
참고서로 생각하시면 됩니다.
(책이 없어도 강의를 위한 별도의 자료가 제공됩니다.) 


이런 분들께 추천드려요!

🎓
학습 대상은
누구일까요?
실무에서 스프링 부트와 JPA를 사용하지만 해당 기술을 더 잘 활용하고 싶은 분
스프링 부트와 JPA는 알지만, 올바른 API 개발 방법을 이해하고 싶은 분
스프링 부트와 JPA는 알지만, 실무에 필요한 성능 최적화 기법을 이해하고 싶은 분
스프링 부트와 JPA는 알지만, 실무에서 꼭 알아야 할 깊이 있는 내용을 이해하고 싶은 분
📚
선수 지식,
필요할까요?
JAVA 언어
스프링 프레임워크
관계형 데이터베이스 기초 지식
JPA

안녕하세요
김영한 입니다.
김영한의 썸네일
커리큘럼 총 24 개 ˙ 6시간 35분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 강좌 소개
강좌 소개 미리보기 02:27
수업 자료
강의 소스 코드
2편 추가 자료
섹션 1. API 개발 기본
회원 등록 API 미리보기 25:46
회원 수정 API 11:29
회원 조회 API 16:52
섹션 2. API 개발 고급 - 준비
API 개발 고급 소개 05:11
조회용 샘플 데이터 입력 16:08
섹션 3. API 개발 고급 - 지연 로딩과 조회 성능 최적화
간단한 주문 조회 V1: 엔티티를 직접 노출 27:54
간단한 주문 조회 V2: 엔티티를 DTO로 변환 21:29
간단한 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화 09:13
간단한 주문 조회 V4: JPA에서 DTO로 바로 조회 22:24
섹션 4. API 개발 고급 - 컬렉션 조회 최적화
주문 조회 V1: 엔티티 직접 노출 11:12
주문 조회 V2: 엔티티를 DTO로 변환 16:27
주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화 25:20
주문 조회 V3.1: 엔티티를 DTO로 변환 - 페이징과 한계 돌파 42:41
주문 조회 V4: JPA에서 DTO 직접 조회 20:30
주문 조회 V5: JPA에서 DTO 직접 조회 - 컬렉션 조회 최적화 11:09
주문 조회 V6: JPA에서 DTO로 직접 조회, 플랫 데이터 최적화 15:04
API 개발 고급 정리 22:05
섹션 5. API 개발 고급 - 실무 필수 최적화
OSIV와 성능 최적화 31:19
섹션 6. 다음으로
스프링 데이터 JPA 소개 18:03
QueryDSL 소개 22:37
강의 게시일 : 2019년 10월 31일 (마지막 업데이트일 : 2023년 11월 27일)
수강평 총 1,009개
수강생분들이 직접 작성하신 수강평입니다.
5
1,009개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
탈룰라 thumbnail
5
Spring과 JPA를 같이 공부하는 학생들이 올려준 수많은 Q&A 덕에 강의를 보다 의문이 생기는 부분이 있으면 Q&A를 참고하면 9할은 해결된다. 이건 킹영환님께서 초지일관 Q&A에 신경을 잘 써주셨기 때문... 결제하고 듣기만해도 내가 오히려 돈을 벌어가는 강의.
2022-01-05
지식공유자 김영한
탈룰라님 열심히 하시니 그만큼 더 얻어가시는 것이라 생각해요^^ 감사합니다.
2022-01-06
이정원 thumbnail
5
JPA 기본편과 활용 1, 2편까지 완강 했습니다. 배속 재생을 하지 않으면 듣기 힘들정도로 지루한 강의 들이 많았는데 영한님 강의는 배속 재생을 할 수가 없었습니다. 그만큼 내용이 알차게 담겨있고 강의 텐션도 좋으셔서 집중해서 모든 강의를 들을 수 있었습니다. 좋은 강의 감사합니다~!~!
2020-07-31
지식공유자 김영한
크! 고맙습니다. 정원님. 사실 저도 텐션이 중요하다고 생각해서, 텐션이 죽으면 다시 찍습니다 ㅋㅋㅋ 이 부분을 상당히 많이 노력했는데, 알아주시는 좋은 피드백을 받아서 기분이 좋네요 ㅎㅎ
2020-07-31
이창민 thumbnail
5
큰일이다. 점점 영한이형이 잘생겨보이기 시작한다. 이것이 사랑인가?
2022-06-05
지식공유자 김영한
ㅋㅋㅋㅋㅋ 이창민님 열심히 들어주셔서 감사합니다. 사랑합니다 ㅎㅎ
2022-06-06
David thumbnail
5
* best practice를 알려주시되 bad practice도 함께 설명해주시니 개선된 것들이 왜 best practice가 되는지 알 수 있었습니다. * 개발편의, 성능, 유지보수 등의 트레이드 오프에 대해 자세히 설명해주십니다. 아직까지 많은 트래픽을 경험한적이 없지만 서비스가 커지고 트래픽이 늘었을 때 백엔드 개발자가 성능 개선을 위해 어떤 점을 고려해야 하는지 알 수 있었습니다. * 성능 개선을 위해 작업 했을 때 SQL 쿼리를 하나씩 보여주시면서 어떻게 성능 최적화가 되는지, 항상 이런 방식의 성능 최적화가 은탄환이 아님도 함께 알려주십니다. Spring Data JPA, QueryDSL 설명을 듣다보니 DB와 JPA의 기본을 더욱 탄탄히 다지고 싶다는 생각이 듭니다. 실무에서의 경험을 멋진 강의로 풀어내주셔서 감사합니다:)
2020-03-19
지식공유자 김영한
강의를 정말 제대로 습득하셨네요^^! 멋진 수강평보다 깊이있게 학습하셔서 제가 더 보람이 있습니다. 항상 응원하겠습니다.
2020-03-20
kingbbode thumbnail
5
다 알려주면 어떻게 하나요 팀장님! 실무에서 많은 도움이 되었던 노하우들이 가득한 강의입니다. 좋은 강의 제작해주셔서 감사합니다 :)
2019-10-31
지식공유자 김영한
ㅎㅎㅎ kingbbode님 항상 최고 감사합니다!
2023-02-18