![Thumbnail](https://cdn.inflearn.com/public/courses/324214/course_cover/8ce5e6b5-6b31-4659-a0cd-eec20efc13f4/kyh_JPA_Spring2.png)
월 17,600원
5개월 할부 시
중급자를 위해 준비한
[웹 개발, 백엔드] 강의입니다.
스프링 부트와 JPA를 활용해서 API를 개발합니다. 그리고 JPA 극한의 성능 최적화 방법을 학습할 수 있습니다.
이런 걸
배워요!
스프링 부트, 실무에서 잘 쓰고 싶다면?
복잡한 문제까지 해결하는 힘을 길러보세요.
🚩 본 강의는 로드맵 과정입니다.
- 본 강의는 자바 백엔드 개발의 실전 코스의 2번째 강의입니다. 스프링 부트와 JPA 실무 완전 정복 로드맵을 먼저 확인해주세요. (링크)
실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화
자바 진영에서는 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 개발하는 것이 세계적인 추세입니다. 그래서 많은 개발자들이 이 두 기술을 학습하고 사용합니다. 하지만 실무의 다양하고 복잡한 상황에 성능까지 고려하면서, 이 기술들을 재대로 활용하는 것은 생각만큼 쉽지 않습니다.
실무에서는 기능을 개발할 줄 아는 단계를 넘어서 기술 문제를 해결할 수 있어야 합니다. 복잡하고, 데이터도 많은 상황에서 성능을 최적화하고, 동시에 유지보수하기 쉬운 애플리케이션을 개발해야 합니다.
강의 목표
![kyh_api1.png](https://cdn.inflearn.com/public/files/courses/324214/04beb98d-b93a-440d-bdb5-b11af631f942/kyh_api1.png)
1편에서는 웹 애플리케이션을 개발하면서 기능 구현에 초점을 맞추었다면, 2편은 기능 개발을 넘어서 기술 문제를 해결하는데 초점을 맞추었습니다. 제대로 구현하는 방법은 무엇인지, 실무에서 주로 어떤 성능 문제가 있고, 어떻게 해결해야 하는지, 기술 문제를 해결할 수 있게 도와드립니다.
![1.png](https://cdn.inflearn.com/public/files/courses/324214/842cd4c5-e2bc-4bf2-8c2b-2285ab3ebcf3/1.png)
API 제대로 구현
API 하나를 개발해도 JPA를 사용하면, 엔티티라는 개념이 들어가면서 고민할 거리가 많아집니다. 엔티티를 API에 직접 노출해야 하나? 아니면 별도의 객체를 별도로 만들어서 반환해야 하나? 엔티티를 반환하면 지연 로딩은 어떻게 처리해야 하나? 등등 수 많은 고민을 하게 됩니다. 실무에서 어떻게 구현하는 것이 안전하고, 유지보수하기 좋은 방법인지 실전 노하우를 알려드립니다.
![2.png](https://cdn.inflearn.com/public/files/courses/324214/4a28643a-61cf-402b-ba3a-a287d6852ca6/2.png)
JPA 극한의 조회 성능 최적화 이해
실무에서는 여러 테이블을 조인해서, 빠르게 데이터를 조회해야 하는 복잡한 상황이 자주 발생합니다. 그런데 여기에 일대다 관계인 컬렉션 데이터도 함께 조회해야 하고, 추가로 페이징까지 처리해야 할 수 있습니다. 그러면 문제가 매우 복잡해져서 단순히 테이블 조인만으로는 문제 해결이 어렵습니다. 이런 복잡한 조회 성능 문제들을 JPA로 어떻게 최적화 하는지, 그리고 한계는 어디까지인지 실전 노하우를 알려드립니다.
![3.png](https://cdn.inflearn.com/public/files/courses/324214/6bce602d-b4b7-46d4-95ba-e83090087f02/3.png)
복잡한 예제를 코딩으로 6단계로 나누어 성능 튜닝
성능이 안나오는 API를 직접 개발해보고, 왜 성능이 안나오는지 분석하고, 6단계로 나누어서 단계별로 직접 코딩하면서 튜닝할 수 있게 준비했습니다. 이런 내용을 따라하다 보면 자연스럽게 실무의 복잡한 성능 이슈를 어떻게 대처해야 할지 알 수 있습니다.
![4.png](https://cdn.inflearn.com/public/files/courses/324214/44512724-50e3-4994-9bf6-46060f59cb06/4.png)
실무 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을 통해 복잡한 쿼리와 동적 쿼리 문제를 해결합니다.
참고 도서
이런 분들께 추천드려요!
학습 대상은
누구일까요?
선수 지식,
필요할까요?
김영한 입니다.
교육자
전: 우아한형제들 기술이사, 카카오, SK플래닛