채널톡 아이콘
BEST

백엔드 애플리케이션 성능 테스트하기

이 강의를 통해 여러분들이 만든 백엔드 애플리케이션의 API를 성능 테스트 해보고 개선하기 위한 기초 지식을 얻어갈 수 있습니다.

Thumbnail

초급자를 위해 준비한
[웹 개발] 강의입니다.

이런 걸 배울 수 있어요

  • API 성능 테스트

  • 성능 테스트에 필요한 CS 지식

API는 만들었는데, 내가 만든 API의 성능은 어떤지 알고 있나요?

제가 실무에서 개발을 하기 전과 후에 크게 달라진 부분을 생각해보면 내가 만든 애플리케이션에 대한 성능을 측정하고, 성능을 개선하는 부분이 달라졌던 것 같습니다. 혼자 애플리케이션을 만들면 사용자가 적거나 나 혼자 사용하기 때문에 대부분 성능이 문제가 되진 않았습니다. 그러나 실무에서는 많은 데이터를 다루고, 많은 트래픽이 발생하기 때문에 성능 테스트는 필수였습니다.

기능이 잘 동작하더라도 나쁜 성능을 보이는 애플리케이션은 결국 시스템 전체의 장애 포인트가 되기도 하고, 그 자체로도 사용자들에게 서비스에 대한 나쁜 경험을 만들게 됩니다. 목록 하나 뜨는데 수십초씩 뜨는 서비스를 쓰고 싶진 않으니까요.

이 강의는 이런 일이 벌어지지 않도록 백엔드 애플리케이션을 성능 테스트하는 방법에 대해 다룹니다. 성능 테스트에 대한 배경지식부터 시작하여 Artillery라는 성능 테스트 툴을 통한 실제 성능 테스트를 진행하고, 간단한 성능 개선 경험을 보여드리겠습니다.

사실 성능 테스트 후 성능을 개선하는 것은 절대 간단하지는 않습니다. 애플리케이션 로직을 효율적으로 바꿔야 할 수도 있고, 데이터베이스 쿼리를 튜닝해야할 수도 있고, 시스템 설계 그 자체를 바꿔야 할 수도 있습니다. 그러나 이런 개선은 모두 성능을 측정하는 것에서부터 시작합니다. 이 강의로 먼저 백엔드 애플리케이션의 성능을 측정하는 방법을 배우고, 개선하는 방법은 하나씩 채워나가시기 바랍니다. 성능 개선에 대한 내용 역시 추후 강의로 제작하겠습니다.

강의에서 작성하게되는 성능 테스트 스크립트

성능 테스트 결과 예시

이런 내용을 배워요

성능 테스트에 필요한 배경지식들

성능 테스트의 핵심적인 내용들을 담았습니다. 지연시간(Latency)과 처리량(Throughput)을 시작으로 운영체제와 서버 자원, 네트워크, 데이터베이스 등 성능 테스트를 진행할 때 고려해야할 내용에 대해 알려드립니다.

성능 테스트 툴 사용 방법

Artillery라는 성능 테스트 툴을 사용하는 방법에 대해 알려드립니다. 성능 테스트를 진행하고, 성능 테스트 결과를 해석하는 방법과 실무에서처럼 몇가지 시나리오를 세우고 파라미터를 바꿔가면서 성능 테스트하는 방법에 대해 알아봅니다.

간단한 성능 개선 경험

성능 테스트를 먼저 진행해보고, 똑같은 동작을 하지만 좀 더 좋은 성능을 내도록 개선해봅니다. 그리고 어떤 이유로 동일한 동작을 하지만 더 좋은 성능을 낼 수 있는건지 알아봅니다.

수강 전 참고 사항

실습 환경

  • 운영 체제 및 버전(OS): Windows 10

  • 사용 도구: Intellij Community 2023.2, JDK 17, Node.js 20

선수 지식 및 유의사항

  • 백엔드 애플리케이션을 만들어본 경험이 있어야합니다. 예제는 Java로 되어있긴 하지만, Java를 몰라도 강의 내용을 이해하는데 문제 없을겁니다. 혹시 Java를 모르는게 강의 내용 이해에 문제가 있다면 질문 남겨주세요. :)

  • 성능 테스트/개선에 필요한 기초적인 개념을 설명하고, 성능 테스트를 어떻게 시작할 수 있는지 전달하고자 하는 강의입니다. 구체적으로 어떻게 성능을 개선할 수 있는지에 대해선 나중에 다른 강의에서 다룰 예정입니다.

  • 수강하시면서 궁금한 내용이 있다면 질문을 남겨주세요. 업데이트해야 할 내용이 있다면 업데이트하겠습니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 백엔드 애플리케이션은 만들어봤지만 성능 테스트는 해본적 없는 사람

  • 서비스 오픈 전 성능 테스트가 필요하다는 이야기를 들었는데 어디부터 시작해야할지 모르겠는 사람

선수 지식,
필요할까요?

  • 백엔드 애플리케이션 제작 경험

  • 자바 기본지식 (필수 X)

안녕하세요
이준형(Foo)입니다.

3,809

수강생

143

수강평

83

답변

4.9

강의 평점

8

강의

안녕하세요.

멘토링을 하면서 주니어 개발자들이 어려워 하는 개념들에 대해 어떻게 하면 쉽게 전달할 수 있을지에 대해서 많은 고민을 하고 있는 푸(Foo)라고 합니다.

잘 부탁 드리겠습니다.


이력

  • 2019. 08 ~ 현재 : 카카오 자바 백엔드 개발자

  • 2021. 08 ~ 현재 : programmers 백엔드 데브코스 멘토

  • 2021. 12 ~ 현재 : F-Lab 자바 백엔드 멘토

 

  • 이것이 취업을 위한 백엔드 개발이다 with 자바(링크)

 

기타 이력 및 타 플랫폼 강의들은 아래 GitHub 링크에서 확인할 수 있습니다.

GitHub - https://github.com/lleellee0

더보기

커리큘럼

전체

19개 ∙ (2시간 53분)

강의 게시일: 
마지막 업데이트일: 

수강평

전체

38개

4.9

38개의 수강평

  • 쿄큐큐

    수강평 27

    평균 평점 4.9

    5

    100% 수강 후 작성

    • 이준형(Foo)
      지식공유자

      쿄큐큐님 수강평 남겨주셔서 감사합니다!!!!

  • 박철현

    수정됨

    수강평 21

    평균 평점 5.0

    5

    100% 수강 후 작성

    감사합니다!! 팀프로젝트를 진행하면서 서버쪽에 배포하는 역할을 담당하게 되었었는데 강사님의 모든강의가 많이 도움되었습니다. 갑자기 생각나서 질문 하나만 할게요!! API 테스트시 레이턴시가 보통 몇 ms이상이면 오래걸리는 작업일까요?

    • 이준형(Foo)
      지식공유자

      박철현님 수강평 남겨주셔서 감사합니다! 레이턴시는 어떤 API냐에 따라 다릅니다. 다만, 일반적인 클라이언트와 서버 사이의 네트워크 시간이 국내 서비스 기준으로 10~20ms 정도는 차지합니다. 그럼 API 서버 내에서 처리되는 시간은 여기에 + a 로 잡히겠죠? 무거운 API가 아니라면 통상적으론 저 a가 10 ms 내외가 될겁니다. 그럼 결과적으로 클라이언트가 느끼는건 20~30ms 정도가 됩니다. 무거운 기능을 수행하는거라면 레이턴시는 당연히 길어질 수 있고, 통상적으로는 100ms를 넘어가면 사용자가 느리다고 인지할 것 같습니다. 이때에는 레이턴시 자체를 줄이는 것도 시도해봐야겠지만, UI 적으로도 사용자가 느끼지 못하게 ajax 등으로 비동기적으로 처리되도록 UI/UX를 구성하는게 좋겠습니다. :) 또 궁금한 내용 있으면 질문 남겨주세요. 감사합니다.

  • 채종훈

    수강평 5

    평균 평점 5.0

    5

    78% 수강 후 작성

    이 강의는 대규모 트래픽을 경험하고 싶어도 경험할 길이 없는 사람들에게 한 줄기 빛과 같은 강의입니다. 도대체 서비스기업에서 중요시한다는 대규모 트래픽 처리 경험이 뭔데? 라던지 그걸 서비스기업 가야 체험할수 있는데 서비스기업에 가려면 그걸 알아야 한다 나같은 신입은 어쩌라는거냐 라는 생각을 하고 계신 분들에게 적합한 강의라고 생각합니다. 현재 아틸러리 도큐먼트대로 하면 제공되지 않는 일부 기능들을 볼 수 있도록 세팅해놓은 강의라 더 좋다고 생각합니다. 며칠전 모 기업 셀장이라는 분이 너무 레거시에만 통달하신 나머지 팀원들을 모아놓고 트래픽 테스트를 한답시고 지금부터 f5 눌러서 새로고침 하세요! 라고 했다던 일화가 생각나는데 스트레스 테스트 개념이 없는 경력자들까지 아우를 수 있는 강의라고 생각해서 추천합니다.

    • 이준형(Foo)
      지식공유자

      채종훈님 구체적인 수강평 감사합니다!! 어떤 분들에게 강의가 필요한지 강의 소개페이지 보다 더 잘 어필해주신 것 같네요 ㅎㅎ

  • 맹수호빵

    수강평 2

    평균 평점 5.0

    5

    100% 수강 후 작성

    실제로 개인 프로젝트를 진행하고 있습니다. 강의 초반에 강사님이 말씀하신 것처럼 'API를 만들긴 했는데, 내 API가 어느 정도의 성능을 낼 수 있는지'에 대한 의구심을 가지고 있었습니다. 그래서 더욱 이번 강의가 와닿았고, 해당 강의를 통해 성능 테스트에 대한 첫 발걸음을 쉽게 뗄 수 있었던것 같습니다! 그리고 단순히 이력서 등에 '성능'이라는 모호한 단어만 썼는데 더 구체적인 '지연 시간', '처리량' 이라고 말하는게 더 개발자스럽다 라는 것도 깨달았습니다! 또 운영체제에 관한 지식도 빠르게 복습할 수 있어서 좋았고, 중간중간 나긋하게 팩폭+뼈를 때려주시는 조언(?)들을 해주셔서 더욱 자극이 되었던 것 같습니다 ㅎㅎ

    • 이준형(Foo)
      지식공유자

      맹수호빵님 생생한 수강평 감사합니다. :) 제가 강의로 전달드리고 싶은 내용들 잘 학습하신 것 같습니다! 진행하고 계신 개인 프로젝트에 잘 적용해보셨으면 좋겠네요~! 더 좋은 강의로 찾아 뵙겠습니다. (_ _)

  • 유요한

    수강평 17

    평균 평점 3.8

    3

    63% 수강 후 작성

    이론적인 느낌이 강해서 예시도 너무 간략한 느낌이 강했습니다. 좀 실전적인 코드를 제공해주고 테스트를 진행하면 더 좋았겠다는 느낌이 들었고 Artillery 최신버전에서는 지원하지 않는 기능이 업데이트 되지 않는 부분이 아쉽습니다. 그리고 사운드가 작았습니다.

    • 이준형(Foo)
      지식공유자

      유요한님 솔직한 리뷰 감사합니다! 강의 내용은 이론적인 내용, 기초적인 내용이 위주였던건 의도된 부분이었으나 말씀해주신 것처럼 좀 더 복잡한 예제를 부록에 다루는 쪽으로 추후 보완해보겠습니다. (_ _) 사운드 관련해서는 확인 후 설 연휴 중으로 키워서 다시 업로드 하겠습니다! 연휴 잘 보내시고 새해 복 많이 받으세요~!

이준형(Foo)님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

₩29,700