
애플리케이션 배포 자동화와 CI/CD
이준형(Foo)
강의를 통해 애플리케이션 배포 자동화를 경험 할 수 있습니다. 프로젝트를 배포해보면서 젠킨스 사용 방법과 CI/CD에 대한 기본 지식도 얻어갈 수 있습니다!
초급
Jenkins, CI/CD, nginx
'백엔드 애플리케이션 성능 테스트하기'의 후속 강의로, 여러분들이 만든 백엔드 애플리케이션의 성능을 개선하기 위한 기초를 다질 수 있는 강의입니다.
수강생 358명
난이도 중급이상
수강기한 무제한







LGCNS
임직원들도 이 강의를 듣고 있어요!





LGCNS
임직원들도 이 강의를 듣고 있어요!
먼저 경험한 수강생들의 후기
5.0
fain9301
좋은 강의 감사합니다.
5.0
shameless8
성능 개선에 관심이 많아서 강의를 들었는데 도움이 많이 되었습니다
5.0
dfdrdodm95
강의 구성이 무척 좋다고 느꼈습니다. 전통적인 방식은 영상 내에서 전부 다 실습으로 재현하게 하여 불필요한 시간 소모가 있고 집중해야 하는 부분이 무엇인지 알기 어려워지는 단점이 있는데 이 강의는 그런 불편을 피할 수 있도록 잘 압축이 돼 있고 내용도 제가 원하던 키워드를 충분히 설명해주고 있어서 만족합니다.
API 성능 테스트
서버 자원이 성능에 영향을 주는 이유와 개선 방법
비동기를 활용한 성능 개선
스노우 플레이크를 활용한 중복 체크 없이도 유니크한 키를 만드는 방법
인덱스와 캐시를 활용한 조회 성능 개선
지난 성능 테스트 강의에서 예고한대로 성능 개선 강의로 돌아왔습니다. 🤗
혼자 개발할 때와 달리 실무에서 팀으로 일하기 시작하면서 겪은 가장 큰 변화가 있습니다. 바로 성능을 측정하고 개선하는 것이었는데요. 혼자 애플리케이션을 만들 때는 사용자 수가 적어 성능이 크게 문제되지 않았지만, 실무에서는 많은 데이터를 처리하고 트래픽이 증가하면서 성능 테스트가 필수라는 것을 알게 되었습니다. 잘 동작하는 기능이라도 성능이 나쁘면 시스템 전체의 장애 포인트가 되기 쉽고, 이는 사용자 경험을 크게 해칠 수 있습니다.
이번 강의는 이러한 문제를 해결하기 위한 성능 테스트 후 API의 로직에 맞는 개선 방법을 다룹니다. 단축 URL 서비스를 예제로, 백엔드 애플리케이션의 성능을 단계적으로 향상시키는 방법을 이해하기 쉽게 준비했습니다.
먼저, 단축 URL 애플리케이션의 기본 코드를 살펴보고 서버에 배포하는 과정을 진행합니다. 생성 API와 조회 API의 성능을 측정하고 어떤 식으로 성능 개선이 가능할지 미리 알아보고 성능 개선 방법을 하나씩 적용해봅니다.
생성 API의 경우, 요청 처리 스레드 수를 늘리고 서버 사이즈를 키우며, 응답과 생성을 분리하는 등의 기법을 통해 성능을 향상시킬 수 있습니다. 비동기 처리와 스노우 플레이크 알고리즘이 어떻게 생성 API의 성능을 크게 개선할 수 있는지 배웁니다.
조회 API의 성능 개선을 위해서는 데이터베이스 인덱스 추가, 캐시 사용, 윈도윙을 활용 등을 다룹니다. 이를 통해 조회 성능을 크게 향상시킬 수 있는 방법들을 실습을 통해 체득할 수 있습니다.



성능에 영향을 주는 애플리케이션 서버의 자원에는 여러가지가 있습니다. CPU, 메모리, 디스크 같은 물리적인 자원에서 시작하여 스레드나 커넥션 같은 소프트웨어 자원들도 있습니다. 이들 모두가 결국에는 성능에 영향을 줍니다. 이 강의에서는 이들 서버 자원이 성능에 어떤 영향을 주고, 어떻게 성능을 개선할 수 있을지에 대해 다루고 있습니다.

API의 사용자인 클라이언트가 느끼는 애플리케이션의 성능은 결국 요청에 대한 응답이 돌아오기까지의 시간인 Latency에 의해 결정됩니다. 결과적으로 같은 일을 하더라도 클라이언트가 더 빠르게 응답을 받아본다면 API의 성능이 좋게 느껴집니다. 만약 클라이언트가 진짜 사용자가 아니라 또 다른 서버라면 시스템 전체의 성능에도 영향을 주겠죠? 이 부분을 개선할 수 있을만한 비동기를 활용한 성능 개선 방법에 대해 알아봅니다.

조회 성능에 대해 이야기할 때 빠지지 않고 등장하는 존재가 바로 인덱스와 캐시입니다. 인덱스는 주로 데이터베이스 레벨에서 다루고, 캐시는 애플리케이션 내에 존재하는 캐시와 공유 캐시 등 여러가지 형태로 존재합니다. 이 강의에서는 인덱스와 캐시에 대한 자세한 내용을 다루는 것은 아니지만, 인덱스와 캐시의 존재가 API 성능에 얼마나 큰 영향을 줄 수 있는지 보여주고 있습니다.

동일한 레코드를 대상으로 Update Query가 계속 날아가는 상황에서는 레코드에 걸리는 Lock에 의해 급격하게 성능이 나빠질 수 있습니다. 이런걸 보통 Hot Spot이라고 부릅니다. Hot Spot 문제에 대한 성능 개선 방법에는 여러가지가 있지만, 단축 URL의 redirectCount를 증가시키는 작업에 적합한 윈도윙을 통해 문제를 해결해봅니다.
*) 강의에서 진행한 내용은 배치 처리에 더 가깝지만, 윈도윙과 동일한 아이디어를 가지고 있습니다. Kafka를 활용하도록 바꾸면 윈도윙으로 쉽게 바꿀 수 있을겁니다.

운영 체제 및 버전(OS): Windows 10,
사용 도구: Intellij Community 2023.2, Google Chrome
예제 프로젝트 레포지토리 : https://github.com/lleellee0/shorten-url-initial
실행 커맨드 & 소스코드들 : https://github.com/lleellee0/shorten-url-initial/issues
클라우드 서비스는 Vultr이라는 서비스를 사용하고 있으나, AWS나 GCP등 다른 클라우드 서비스를 사용해도 됩니다. 다만 다른 클라우드 서비스 사용시 방화벽 설정 등 일부 차이가 있을겁니다. 그러나 이런 문제는 여러분들이 직접 검색해보고 몸으로 부딪혀보면 더 많이 얻어갈 수 있을거라고 생각합니다.
기존 성능 테스트 강의에서 사용했던 Artillery를 사용하여 성능 테스트를 진행하고 있습니다. nGrinder를 활용한 성능 테스트는 부록에서 간단히 보여주고 있습니다.
수강하시면서 궁금한 내용이 있다면 질문을 남겨주세요. 업데이트해야 할 내용이 있다면 업데이트하겠습니다.
학습 대상은
누구일까요?
이전 강의인 '백엔드 애플리케이션 성능 테스트하기'를 수강한 사람
API 성능 개선에 많이 활용되는 방법에 대해 배우고 싶은 사람
선수 지식,
필요할까요?
백엔드 애플리케이션 개발 경험
성능 테스트에 관심이 있거나 해본 경험
커리어인증
6,407
명
수강생
360
개
수강평
117
개
답변
4.9
점
강의 평점
9
개
강의
안녕하세요.
멘토링을 하면서 주니어 개발자들이 어려워 하는 개념들에 대해 어떻게 하면 쉽게 전달할 수 있을지에 대해서 많은 고민을 하고 있는 푸(Foo)라고 합니다.
잘 부탁 드리겠습니다.
이력
2019. 08 ~ 현재 : 카카오 자바 백엔드 개발자
2021. 08 ~ 현재 : programmers 백엔드 데브코스 멘토
2021. 12 ~ 현재 : F-Lab 자바 백엔드 멘토
책
이것이 취업을 위한 백엔드 개발이다 with 자바(링크)
기타 이력 및 타 플랫폼 강의들은 아래 GitHub 링크에서 확인할 수 있습니다.
GitHub - https://github.com/lleellee0
전체
17개 ∙ (2시간 39분)
1. 강의 소개
04:02
2. 이전 강의 내용 간단 요약
03:06
3. 실습 환경
06:49
5. 서버에 배포하기
20:00
6. 생성 API 성능 측정하기
10:07
7. 조회 API 성능 측정하기
11:19
9. 요청 처리 스레드 수 늘리기
04:40
10. 서버 사이즈 키우기
04:59
11. 응답과 생성을 분리하기
18:35
전체
10개
4.8
10개의 수강평
수강평 14
∙
평균 평점 5.0
5
강의 구성이 무척 좋다고 느꼈습니다. 전통적인 방식은 영상 내에서 전부 다 실습으로 재현하게 하여 불필요한 시간 소모가 있고 집중해야 하는 부분이 무엇인지 알기 어려워지는 단점이 있는데 이 강의는 그런 불편을 피할 수 있도록 잘 압축이 돼 있고 내용도 제가 원하던 키워드를 충분히 설명해주고 있어서 만족합니다.
dfdrdodm95님 감사합니다. (_ _) 말씀하신대로 최대한 콤팩트하게 강의 내용을 전달하려고 노력중입니다~ 앞으로도 dfdrdodm95님 기대에 부응하는 강의 만들어보겠습니다.
수강평 1
∙
평균 평점 5.0
지식공유자님의 다른 강의를 만나보세요!
같은 분야의 다른 강의를 만나보세요!