인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

확장성 있는 시스템 설계하기

현대의 디지털 제품과 서비스는 작은 아이디어에서 시작해 수백만 사용자에게 사랑받는 모습으로 성장합니다. 이를 가능하게 하는 핵심은 확장성 있는 시스템 설계입니다. 이 강의에서는 소규모에서 대규모 시스템으로 성장할 수 있는 설계 원리와 실천 방안을 배울 수 있습니다.

초급자를 위해 준비한
[백엔드, 시스템설계] 강의입니다.

이런 걸 배울 수 있어요

  • 소규모에서 대규모 서비스로 성장하기 위한 확장성 있는 시스템 설계의 기본 원리를 배웁니다.

  • 가용성, 성능, 확장성을 고려한 단계별 설계 전략과 실천 방안을 학습합니다.

  • 플랫폼, 서버, 클라이언트 엔지니어링의 역할과 협업 방식을 알아봅니다.

확장성 있는 시스템 설계하기; 작은 아이디어에서 대규모 서비스로-

현대의 디지털 제품과 서비스는 작은 아이디어에서 시작해 수백만 사용자에게 사랑받는 모습으로 성장합니다. 이를 가능하게 하는 핵심은 확장성 있는 시스템 설계입니다. 확장성은 시스템이 사용자의 증가와 데이터의 폭증에 대응할 수 있는 능력입니다.

이 강의는 프로젝트 #POTD(Photo of the Day)를 중심으로 진행됩니다. POTD는 하루 한 장의 사진으로 우리의 이야기를 특별하게 만들어 줄 간단하고 직관적인 앱입니다. 사용자는 사진을 찍고 짧은 글과 함께 업로드한 뒤, 다른 사용자들과 소통하며 좋아요를 누르고, 댓글을 달 수 있습니다. 또한, 해시태그를 이용해 관심사가 비슷한 사람들의 사진을 쉽게 찾아볼 수 있는 아이디어에서 출발했습니다.

하지만 간단해 보이는 이 앱도 사용자가 점진적으로 늘어나는 과정에서 시스템 운영에 많은 도전 과제를 안겨줍니다. 이 강의에서는 POTD 프로젝트를 통해 Outside-In 및 API-First Development Approach를 적용해 MVP(최소 기능 제품)를 설계하고 출시한 뒤, 실제로 사용자 수와 트래픽이 증가할 때 발생하는 다양한 문제를 해결하며 시스템을 확장해 나가는 과정을 배우게 됩니다.

POTD 프로젝트에서 다룰 주요 학습 내용은 다음과 같습니다.

  • 최소 기능 제품으로 출발하며, 초기 사용자 요구사항에 초점을 맞춘 간결하고 효율적인 시스템 설계를 학습합니다.

  • 사용자 증가에 대비해 서버를 수평 확장하고, 로드 밸런서를 통해 트래픽을 효과적으로 분산시키는 방법을 배웁니다.

  • 데이터베이스 클러스터링, 복제, 캐싱 전략을 통해 대규모 데이터를 안정적이고 빠르게 처리하는 방법을 익힙니다.

  • 데이터베이스 검색의 한계를 극복하기 위해 검색 엔진과 메시지 큐를 도입해 효율적인 검색과 비동기 처리를 구현합니다.

  • 머신러닝을 도입해 사용자 데이터를 분석하고 개인화된 추천 시스템을 설계합니다.

  • CDN과 멀티-데이터 센터를 통해 글로벌 사용자들에게 빠르고 안정적인 서비스를 제공하는 방법을 학습합니다.

소프트웨어 개발은 단순히 시스템을 작동하게 하는 것이 아니라, 변화하는 환경에서도 가치를 유지하고 확장할 수 있게 만드는 것입니다. 이 강의를 통해 확장 가능하고 유연한 시스템 설계의 첫걸음을 함께 시작하세요. 🚀

이런 내용을 배워요

확장성 있는 시스템 설계

POTD 프로젝트를 통해 MVP에서 시작해 글로벌 서비스를 설계하는 과정을 단계별로 배웁니다. 로드 밸런싱, 데이터베이스 클러스터링, 검색 엔진, 캐싱, CDN 등 주요 기술을 활용해 성능과 확장성을 갖춘 시스템을 설계해봅니다.

확장성을 고려한 소프트웨어 설계

수평 확장에서 발생하는 세션 관리 문제를 해결하고, 소프트웨어를 유연하게 설계하는 방법을 배웁니다. 또한, 변화하는 환경에서도 시스템의 가치를 유지할 수 있는 적응형 아키텍처에 대해 알아봅니다.

수강 전 참고 사항

유의사항

  • 본 강의는 실습이 포함되지 않은 이론 중심 강의로, 주로 개념과 전략을 소개하고 이해를 돕는 데 초점을 맞추고 있습니다.

  • 본 강의는 확장성 있는 시스템 설계를 처음 접하는 학습자들을 위해 개념을 이해하기 쉽게 설명합니다. 하지만 각 기술의 심화된 내용은 별도의 학습이 필요합니다.

  • 본 강의는 좀 더 정확한 전달을 위해 AI 보이스 기술을 사용하여 제작되었습니다.


이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 프로그래밍에는 익숙하지만, 시스템 아키텍처 설계에 익숙하지 않은 분

  • 실무 경험은 없지만, 소프트웨어 엔지니어링의 전반적인 구조와 시스템 설계의 원리를 이해하고 싶은 분

  • 작은 아이디어에서 출발해 대규모 서비스를 만들고 운영하는 과정에 대해 배우고 싶은 분

선수 지식,
필요할까요?

  • 한 가지 이상의 프로그래밍 언어(Java, Python 등)에 대한 경험이 필요합니다.

  • 컴퓨터 과학(CS)의 기본 개념(데이터베이스, 네트워크, 알고리즘 등)에 대해 이해가 필요합니다.

  • HTTP 와 웹 애플리케이션 동작 원리에 대한 기초가 필요합니다.

안녕하세요
JYK 매니지먼트입니다.

1,316

수강생

37

수강평

4.9

강의 평점

3

강의

JYK management

“Jazz Your Knowledge 🆙

“당신의 지식을 더 신나게, 더 매력적으로 만들어라“

——

"당신의 아이디어가 세상을 바꿀 수 있습니다. 우리는 그 과정을 함께합니다."

더보기

공동 지식공유자

수강평

전체

10개

5.0

10개의 수강평

  • vvlfmald님의 프로필 이미지
    vvlfmald

    수강평 2

    평균 평점 5.0

    5

    100% 수강 후 작성

    신청하고 한 번에 다 봤습니다! 이 강의는 초급자를 위한 강의라고 소개되어 있지만, 저는 IT 업계에 종사하는 모든 사람들에게 도움이 될 만한 내용이라고 생각해요! 공부, 취업, 이직을 목표로 달리다 보면, 자칫 '나무'만 보게 되고 '숲'을 보지 못하는 경우가 많습니다. (제가 그랬어요...ㅠ^ㅠ) 강의를 듣기 전에도 '검색 엔진', '스케일 아웃' 같은 개념은 들어봤고 알고는 있었어요. 그런데 그게 왜 필요해지는지, 그리고 도입 후 어떤 흐름으로 발전하는지까지 체계적으로 정리해서 이해하고 있진 않았습니다. 그래서 만약 제가 이 강의에서 다루는 내용을 설명했다면, 결국 제가 그나마 잘 아는 특정 개념(나무)에 치중됐을 거예요. 하지만 이 강의에서는 그런 개념들이 어떻게 연결되어 전 세계 트래픽을 감당하는 거대한 서비스로 확장되는지를 자연스럽게 이해할 수 있도록 해줍니다!! 덕분에 서비스 설계를 더 넓은 시야에서 바라볼 수 있게 됐어요! 강의가 꼬리에 꼬리를 물고 진행되는 느낌이라 너무 재미있어서 한 번에 정주행했지만, 앞으로도 자주 찾아보게 될 것 같아요!

    • sebiinim님의 프로필 이미지
      sebiinim

      수강평 1

      평균 평점 5.0

      5

      19% 수강 후 작성

      도식이 깔끔해서 이해하기 편합니다!

      • sootudio님의 프로필 이미지
        sootudio

        수강평 1

        평균 평점 5.0

        수정됨

        5

        100% 수강 후 작성

        강의를 들으며 '확장 가능한 웹 애플리케이션 설계'에 대한 역량을 키울 수 있었습니다. 웹 개발자, 특히 백엔드 개발자로 성장하고 싶으신 학생/취준생 분들은 꼭 한번씩 들으시길 추천드립니다! 제가 웹 개발 공부를 시작했을 때 가장 어려웠던 점 중 하나가, '어떠한 기술이 왜 필요한지에 대해 아는 것' 이었습니다. 특히 웹 구조에 대해 서버, DB, 클라이언트 정도의 구조만 알다가 부트캠프에 들어가고서 프로젝트를 진행하니 Redis, Kafka, RabbitMQ, Elasticsearch 등 생소한 기술들을 접할 기회가 많았습니다. 이러한 기술들을 사용하는 경험을 쌓으면 좋다는 얘기를 듣고, 일부는 써보기도 했습니다. 하지만 이런 것들이 '어떠한 문제'를 느끼고 이를 해결하기 위해서가 아닌, 그저 '도움이 되는 경험' 정도로 남겨지는 것 같아 아쉬움이 많았습니다. 그러던 중, 이 강의를 듣고 평소 궁금했던 부분들을 많이 해소할 수 있었습니다. 가장 기본적인 기능부터 시작해서 문제 상황을 제시하고, 이것을 해결할 수 있는 기술과 그 기술이 어떤 식으로 문제를 해결하는지, 마지막으로 해당 기술의 대표적인 예시들을 소개시켜 주시는 방식으로, 시스템을 설계할 때 'A 문제에는 B라는 솔루션(기술)을 사용할 수 있다' 라는 개념이 세워지게 됩니다. 또한 시스템 설계에 필요한 기술이 추가될 때 마다, 이것을 아키텍처 다이어그램으로 보여주시며, 요청/응답의 흐름과 구조 등을 쉽게 파악할 수 있도록 강의가 제공됩니다. 최종적으로는, 웹 서비스를 만들 때, 발생하는 문제들에 효과적으로 대처하며, 문제를 해결하는 기술적 역량 역시 기를 수 있다고 생각합니다. 현재 강의를 들으며, 강의 내용을 바탕으로 이전에 만들었던 프로젝트의 구조를 다시 만들어 보고 있는데, 이전에 이해가 되지 않았던 부분이나 비효율적으로 설계했던 부분들이 눈에 보이며, 더 개선된 구조를 만들 수 있었습니다. 웹 개발을 공부하시는 다른 분들도 이 강의를 들으며 앞으로 진행할 프로젝트에서 확장성 있고 효율적인 웹 시스템을 설계하는 역량이 많이 길러지시길 바랍니다!! :)

        • Jacky님의 프로필 이미지
          Jacky

          수강평 1

          평균 평점 5.0

          5

          100% 수강 후 작성

          강사님의 다른 강의에서 이 내용을 들을 기회가 있었는데, 그때 너무 재미있게 듣고 강의로 나오면 꼭 다시 들어야지 하고 생각했었습니다. 항상 지엽적인 부분들을 공부하느라 큰 그림을 알고 싶은 마음이 강했는데, 내가 관여하는 부분이 프로젝트 전체에서 어떤 부분인지, 다른 부분과 어떻게 연관이 있는지 깨닫게 되는 좋은 강의입니다. 전체를 멀리서 바라보는 관점을 가지게 되니 시야가 한결 넓어진 기분입니다.

          • Heechan Cho님의 프로필 이미지
            Heechan Cho

            수강평 1

            평균 평점 5.0

            5

            81% 수강 후 작성

            너무 즐겁게 보았습니다. 항상 보고 듣고 실천하게 되는 기초인 것 같은데 오히려 늘상 접하다 보니 스스로가 느슨해지는 것 같습니다. 그러다보니 프로젝트에서 문제 발생시 어렵게 느껴지기도 하구요. 이 강의는 제가 놓치고 있던 시야를 간단히 돌려놓는 강의였습니다. 너무나도 자주 접하는 이야기들을 말하지만 들을 때마다 매번 새로운 것 같습니다. 좋은 강의 감사합니다.

            비슷한 강의

            같은 분야의 다른 강의를 만나보세요!

            ₩11,000