초급
챕터 10개 · 7시간 59분
한국어 · 영어 · 일본어|오디오 한국어

여러 인프라 요소를 사용해
총 2개의 작품 만들기

한 작품을 만들어 보는데에 4~5시간 정도가 소요됩니다.

  • 무중단 자동화 배포 시스템

  • 신뢰성있고 빠른 백엔드 시스템

이런 걸 배울 거예요

Nginx 무중단 배포

Nginx를 통한 scale-out과 무중단배포 시스템을 구축합니다.

Git, Jenkins 배포 자동화

실무를 위한 Git, Jenkins로 배포 자동화하기를 배웁니다.

Message Queue

RabbitMQ로 요청을 저장했다가 서버 리소스만큼 처리하기를 배웁니다.

Elasticsearch로 빠른 검색

검색엔진인 ES를 통한 DB보다 훨씬 빠르게 검색 하는 방법을 배웁니다.

IT 대기업들의 백엔드 개발자 채용공고를 본 적 있나요?

IT 대기업들의 백엔드 개발자 채용공고

📍위 밑줄 친 부분을 배울 수 있도록 커리큘럼을 구성했어요.

겉보기엔 어려워 보이지만, 결국 배우고 나면 나도 저런 곳에서 일할 수 있는 사람이 된다는 말이 되겠죠?

하나의 채용공고만 대표로 가져왔지만, 커리큘럼에 포함된 내용들은 대기업 IT 개발자 채용 공고에 공통적으로 들어가는 것들입니다. 그만큼 실무에서 많이 사용한다는 의미입니다.

여러분이 이 클래스를 들으시면, 대기업 및 유니콘 스타트업에서 일하는 백엔드 개발자로 한걸음 더 가까워질 수 있는 기회가 될 거예요.



실무에서는 백엔드를 어떻게 구성할까?

저 역시도 개발을 시작할 땐 그런 궁금증이 많았습니다.

📍제가 실무를 하기 전 궁금했던 내용들입니다.

  • 실무에서는 Git을 어떻게 사용하고 있을까? 나는 commit, push 밖에 할 줄 모르는데..
  • 코드가 변경되어서 이걸 새로 서버에 올려야 하는데, 서버가 뜨는 동안에는 요청받을 수가 없잖아. 이걸 어떻게 해야하지?
  • DB의 LIKE로 검색을 구현했는데, 데이터가 쌓이니까 너무 느려졌어. DB 말고 검색에 적합한 저장소는 없을까?
  • 내가 만든 애플리케이션을 서버에 올려서 어느 정도의 트래픽을 받을 수 있는지 테스트해보려면 어떻게 해야 할까?
  • AWS나 GCP 같은 클라우드 서비스에 내 서비스를 올려보고 싶은데, 어떻게 구성해야 좋을까?


위와 같은 궁금증을 가져보신 분이라면 이 클래스를 꼭 수강해 보세요. 분명 후회하지 않을 겁니다.



저는 백엔드 실무 초급을 함께할 카카오 개발자 푸 입니다.

📍현재 카카오에서 스팸 및 어뷰징 분석, 대응 시스템 개발 업무를 하고 있습니다.

제가 카카오에 입사하기 전, 학부생일 때 처음 웹 서비스를 만들고 나서 정말 궁금했던 건 "과연 카카오나 네이버 같은 IT 대기업들은 어떤 식으로 백엔드를 구성하는 걸까?" 였습니다.

이런 궁금증이 드는 이유는 당연하잖아요? 카카오와 네이버는 사용자가 엄청 많은 기업인데, 대체 어떤 비결이 있길래 장애 없는 서비스를 계속 운영하는 건지 궁금했습니다.


그리고 또 하나 궁금했던 게 있다면, "Git으로 여러 명이 하나의 프로젝트를 개발하고 있으면, merge 할 때 충돌(conflict)이 나는 걸 어떻게 막을까?" 였습니다.

저도 아직 가야 할 길은 멀지만, 당시 궁금했던 내용들을 여러 가지 시행착오를 겪으면서 어느 정도 이해하게 된 것 같네요.

이 클래스는 학부생일 때 제가 궁금했던 것들의 답변과 기타 대부분 백엔드 환경에서 사용되는 시스템 구성에 대한 것들을 다루고 있어요.

여러분이 이제 막 개발을 시작했다면, 백엔드에 대한 다양한 궁금증과 막막함으로 가득 차있다면 확실히 도움 될 수 있는 실무 클래스를 준비했습니다.



백엔드 실무를 잘하려면 어떤 걸 알면 되나요?

📍군더더기 없이 깔끔하게, 딱 4가지만 배웁시다.

  1. 애플리케이션의 성능을 테스트하고, 개선하는 법
  2. 서버를 분산시키고, 많은 트래픽을 견뎌내는 법
  3. 실무에서 협업을 잘하고 싶을 때 쓰는 Git 사용법
  4. 대규모 트래픽을 처리할 수 있는 시스템 구성 방법


1) 애플리케이션의 성능을 테스트하고, 개선하는 법

📍성능 튜닝의 시작은 현재 성능을 테스트해보는 거겠죠?

처음 우리가 만든 애플리케이션의 성능이 어느 정도인지 확인하고, 이를 개선하는 과정을 진행할 거예요. 점점 좋아지는 애플리케이션을 보며, 내 실력이 나아진다는 것을 체감할 수 있는 가장 좋은 방법입니다.


2) 서버를 분산하고, 많은 트래픽을 견뎌내는 법

📍Nginx & Jenkins로 좋은 서버를 만들어볼게요.

용어가 어려워 보이지만, 쉽게 생각하면 서버를 분산시켜야 많은 트래픽을 견딜 수 있다는 이야기입니다.

중단 없이 새로운 버전을 배포하고, 많은 트래픽을 받을 수 있는 시스템의 시작은 Nginx 로드밸런싱(*)스케일아웃(**) 입니다. 사용자의 요청을 여러 서버로 분산하는 데에서 시작한다는 얘기죠.

여기에 Jenkins 배포 자동화까지 시켜보세요. 여러분의 백엔드 업무는 더욱 탄력을 받을 거예요.


[📚잠깐! 용어설명!]

(*) 로드밸런싱(load balancing) : 서버가 받는 부하를 여러 서버로 분산하는 것

(**) 스케일아웃(scale out) : 연결된 서버 자체의 성능을 올리는 것이 스케일업(scale up)이라면, 연결된 서버의 수를 늘려서 수평적으로 확장하는 것은 스케일아웃!


3) 실무에서 협업을 잘하고 싶을 때 쓰는 Git 사용법

📍많은 사람이 함께하는 프로젝트는 대체 어떻게 관리해야 되는 거야?

Git으로 branch 따고 commit 하고, Github에 push 하는 것도 해봤는데, 여러 사람이 같은 프로젝트를 개발하는 협업 환경에서는 어떻게 해야 할까요?

협업 환경에서의 브랜치 전략, 자주 사용되는 Git 기능들에 대해서 배웁니다. 혹시라도 Git을 처음 써보는 거라도 걱정 마세요. 기초부터 빠르고 쉽게 설명드립니다.


4) 대규모 트래픽을 처리할 수 있는 시스템 구성 방법

📍훨씬 더 많은 트래픽을 처리하기 위한 노하우!

Nginx로 로드밸런싱을 했다면, 들어온 요청은 RabbitMQ에 저장했다가 리소스가 허용하는 만큼 처리합니다.

이렇게 하면 단순히 서버와 DB가 1:1로 붙었을 때보다 훨씬 많은 트래픽을 처리할 수 있게 됩니다. 그리고 검색엔진인 Elasticsearch(ES)를 이용하면 더욱 빠르게 검색까지 할 수 있게 되는 원리죠.

이런 대규모 트래픽을 처리하는 시스템까지 구성할 줄 안다면, 대기업 및 유니콘 스타트업 백엔드 개발자에 한걸음 더 가까워지는 계기가 될 거예요.



백엔드 실무 클래스의 최종 목표는 명확해요.

📍여러 인프라 요소들을 선택해서 서비스에 적합한 시스템을 구축하는 것!

제가 클래스에 포함한 RabbitMQ는 Kafka나 Pulsar 등의 다른 메시지 큐 구현체로도 대체할 수 있습니다.

다만, 그중 하나가 절대적으로 우위에 있는 기술은 별로 없습니다. 하나가 절대적 우위에 있다면 다른 기술들은 이미 도태되었겠죠. 즉, 기술을 다루는 것에는 선택사항이 있다는 겁니다.

여러분들이 이 클래스에서 얻어 갈 것은 다음 2가지입니다.

  1. 서비스의 어떤 부분에 어떤 기술이 적용되어야 할지?
  2. 해당 기술을 구현한 여러 선택사항 중 우리 서비스에 적합한 선택은 무엇일지?

위 2가지에 대해 생각할 수 있는 힘을 얻어 가셨으면 좋겠습니다.



수강 시 주의사항이 있습니다.

제가 클래스에서 다루는 여러 가지 기술들은 하나하나가 방대한 문서를 가지고 있고, 제가 소개 드린 기능 외에 훨씬 다양한 기능들을 가지고 있습니다.

그래서 소개하는 기능들은 정말 해당 기술의 극히 일부분입니다. 때문에 클래스를 수강하고, 다음과 같은 생각을 가지지 않도록 주의하세요.

  • 나는 Nginx를 마스터했어!
  • Database, Elasticsearch 2개만 있으면 필요한 저장소를 다 커버할 수 있겠는데?
  • RabbitMQ로 메시지를 전송하면 '절대' 메시지가 유실될 걱정은 없겠는데?

가장 기초적이고 바로 활용할 수 있는 내용을 클래스에서 다루고 있기에, 이걸 배우고 나면 실무에 적용해보고, 그 후에 더욱 깊게 공부해가면서 실력을 쌓으시길 권합니다.



클래스 실습 환경

📍윈도우 환경이 필요하고, 그 외 추가적인 프로그램은 다음과 같은 것들이예요.

  • Windows 10 x64 (이 강의를 수강하시는 분들 중 윈도우 사용자가 더 많을 거예요. 하지만 MacOS를 사용하셔도 강의 따라오시는데는 문제없을 거예요. 어차피 서버에 올려놓고 작업하거든요.)
  • IntelliJ IDEA Community (무료 버전인 Community 버전으로 제작합니다.)
  • JDK8 (현재 기준으로 가장 범용적으로 사용되는 자바 버전이라고 생각했습니다. 다만 Java가 아닌 다른 언어로 실습하셔도 무관합니다.)
  • Google Cloud Platform
  • Docker Desktop
  • Jenkins
  • Nginx
  • Git, Github, SourceTree
  • Database
  • RabbitMQ
  • Elasticsearch

진짜 백엔드 실무로 가는 지름길!

클래스에서 뵙겠습니다 :)

커리큘럼

크리에이터

푸

반갑습니다, 카카오 개발자 푸 입니다.



📚크리에이터 Foo 이력

  • 카카오 자바 백엔드 개발자 (2019. 08 ~ )

  • Programmers 백엔드 데브코스 멘토 (2021. 08 ~ )

  • F-Lab 자바 백엔드 멘토 (2021. 12 ~ )

강의들

  • Inflearn 백엔드 애플리케이션 성능 테스트하기 (링크)

  • Inflearn 포트폴리오 초간단 배포하기 (링크)

  • Inflearn 백엔드 개발자에 의한, 백엔드 개발자들을 위한 프론트엔드 강의 - 기본편 (링크)

  • Inflearn 장애 없는 서비스를 만들기 위한 Resilience4j - CircuitBreaker (링크)

  • Programmers 자바 객체지향 강의 (링크)

  • CLASS101 백엔드 인프라 관련 강의 (링크)

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

image.png


📍Foo라는 닉네임으로 다양한 지식을 전하고 있어요.

취업 전 처음 웹 서비스를 만들고나서 '대규모 서비스들은 어떻게 이렇게 많은 트래픽을 받을 수 있을까?' 라는 궁금증을 가졌었습니다.

이 강의를 수강하시려는 여러분도 저와 비슷한 고민을 할거라고 생각합니다. 물론 제가 서비스에 필요한 모든 요소를 아는 것도 아니고 설령 안다고해도 강의에는 모두 담을 수는 없겠죠.

하지만 백엔드 실무 강의에 포함된 내용들만 잘 학습 하신다면 서비스에 적합한 안정적인 인프라를 구성할 수 있는 실력을 가질 수 있을거에요!

진짜 백엔드 실무로 가는 지름길!

클래스에서 뵙겠습니다 :)

GitHub

GitHub

이 클래스와 비슷한 추천 클래스

[웹 개발자 단과반 2교시] MySQL, Node.js 백엔드 속성 실무!백엔드  |  개발자 사관학교
고객센터오전 10시 ~ 오후 6시 (주말, 공휴일 제외)
주식회사 클래스101
대표 공대선
서울특별시 강남구 테헤란로 415, 4층(삼성동, 엘7강남타워)
대표전화 : 1800-2109
이메일 : ask@101.inc
사업자등록번호 : 457-81-00277
통신판매업신고 : 2022-서울강남-02525
클라우드 호스팅 : Amazon Web Services Korea LLC
사업자 정보 자세히 보기
클래스101은 통신판매중개자로서 중개하는 거래에 대하여 책임을 부담하지 않습니다.