강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Devops & Infra

Complete Guide to AWS Deployment (feat. Lightsail, Docker, ECS)

In this lecture, you will learn about AWS ECS, one of the representative technologies of Container Orchestration! You will also build CICD with Github Action. However, you will not learn ECS from the beginning. ECS can be called the king of DevOps, so it can feel too difficult. So, in the beginning of the lecture, we will first cover the basics with AWS Lightsail, which has a relatively low learning curve among traditional virtual servers. You will also experience the limitations and inconveniences of the existing method. By building up with the basics and “Why” in this way, you will naturally learn Docker Containers and ECS!

(4.8) 43 reviews

693 learners

  • sihoon
이론 실습 모두
Docker
CI/CD
AWS
aws-ecs

Reviews from Early Learners

What you will learn!

  • Traditional Virtual Server Deployment - AWS Lightsail

  • High Availability - High Availability

  • CI/CD using Github Actions

  • Container Technology - Docker

  • Container Orchestration - AWS Elastic Container Service (ECS)

  • Cloud Security

  • Docker Compose - Building a clean dev & test environment

Understanding AWS Server Deployment Properly!
I'll explain it to you more simply and more firmly.

This isn't just a simple AWS ECS & Docker tutorial!

You'll experience the inconveniences of deploying traditional VMs firsthand. This will help you understand the why and learn ECS & Docker properly . 😎

Why does AWS adoption feel so unfamiliar? 😥

Have you ever felt overwhelmed trying to use the AWS cloud? There are so many ways to deploy servers within AWS. And most importantly, each configuration is different. You simply want to deploy your code robustly, cheaply, securely, and quickly. But there are so many unfamiliar settings.

  • VPC?! What's a Subnet anyway?
  • Availabiliy Zone?
  • What about security groups... inbound? Shouldn't this just allow all IPs?
  • Wouldn't it be safe to put environment variables here?
  • What the heck is IAM?! Why not just grant AdminAccess?
  • What else is a load balancer? Setting up listener rules and target groups...

Haven't you ever asked yourself this question after barely distributing it?

  • How do you automate deployment? CI/CD? What is CI and what is CD?
  • They say you can auto scale using the cloud, but how do you do that?
  • What exactly is the difference between a virtual machine and a container?
  • Why use containers? And what is Container Orchestration?
  • Kubernetes vs Elastic Container Service (AWS ECS), I don't know what's the difference.
  • I understand Docker, but what is Docker-compose? Do I need to know this too?
  • Why not just use an "easy" cloud like Fly.io, Vercel, or Heroku? Sure, it might be a bit more expensive, but wouldn't it save me a lot of time?

I think most of you have either given up on adopting AWS because you wanted to focus on service development, or you've just haphazardly set things up to make it work.

The problem is that if done wrong, you could be exposed to costly and critical security vulnerabilities . And despite the ease of building highly available servers, you might not be able to take advantage of these cloud benefits.

Highly available servers are crucial, especially as your service grows. Even if a natural disaster completely shuts down your data center, you can still maintain service!

I hope that through this lecture, many people will be able to properly understand AWS and use it easily.

Originally, I planned to create a course solely covering Docker and AWS ECS. However, I felt that it might be too overwhelming and difficult to understand why these technologies were developed. Therefore, to facilitate understanding, I divided the course into two parts .

The first part covered "A robust deployment method using traditional virtual servers."
I've tried to explain this as simply as possible, using Lightsail instead of EC2. This process covers important concepts related to server deployment.

  • Horizontal Scaling vs. Vertical Scaling
  • Stateless vs. Statefull
  • High Availability & Availability Zones
  • Private Network & Firewall
  • Load balancer & HTTPS
  • SSH tunneling
  • Deployment Automation: Pull Request-based CI/CD for Teams & CI/CD for Solo Developers
  • Handling the Test & Build Process for CI
  • Managing environment variables safely

Next, we'll revisit the shortcomings of virtual servers and explore how container technology can improve these issues . In the final part, we'll delve into the fundamentals of Docker containers and focus on AWS Elastic Container Service (ECS), a leading container orchestration technology.

Below are some of the materials used in the lecture :)


Q&A 🙋🏻‍♂️

Q. Should I learn ECS instead of Kubernetes?

I've been using Kubernetes for about five years. I introduced it to my company directly when I implemented MSA. Even then, I was debating between K8S and ECS. The open source aspect was appealing, so I chose Kubernetes at the time.

After much deliberation, I decided to use ECS for my new company. While ECS isn't open source, I found it easier to use. And then I realized that the vendor-lock issue was actually much smaller than I'd anticipated. Regardless of whether you use Kubernetes or ECS, you're using the same Docker containers. All code is written in the same Docker environment. On AWS, ECS was attractive because it was slightly cheaper and had slightly easier DX. Furthermore, both Kubernetes and ECS are container orchestration technologies. In other words, if you excel at one, switching to the other is surprisingly easy.

Q. What do you think about serverless systems like AWS Lambda?

It's certainly a good technology, and I use it in my image upload tutorial . However, I don't think it's suitable for general servers unless there are special circumstances. While it may seem very cheap, it quickly becomes significantly more expensive as traffic increases. It's also highly susceptible to vendor lock-in, making it relatively difficult to migrate to a general server later.

First of all, because Lambda is a short-lived server, it's difficult to create a WebSocket server. Therefore, Vercel, which uses AWS Lambda, states in its documentation that it doesn't support WebSockets and recommends using an external service. There may also be additional issues to consider, such as managing a database connection pool.

Q. Do I need to know Node.js?

No! In this course, we'll initially build a simple backend (Express app) using Node.js. However, this is purely for the purpose of providing code for deployment. It's also intended to add dummy test code and build processes for building a CI pipeline. All the Node.js code generated here is provided, so you can skip this section.

Q. Do you also learn about deploying stateful services, such as databases or message queues like Kafka, and managing servers?

Stateful services like databases and message queues are more complex and require more management than you might think. This course focuses on deploying your own developed services (backend, ETL pipeline, SSR server), rather than complex external services like databases.

While the material covered here is certainly relevant for deploying complex services like databases, if you're looking to deploy your own databases, you'll need to study more. For stateful services like databases and queues (Kafka), managed services are recommended! Most managed services are supported by AWS itself, while others are managed clouds offered by individual service providers.

For example, for Kafka, there's Confluent or AWS MSK, and for MongoDB, there's Atlas or AWS DocumentDB. These managed services exist for each service in the first place because server management for these services is more complex than you might think! Therefore, even if you're taking this course, I highly recommend using managed services for these stateful services!

Recommended for
these people

Who is this course right for?

  • Backend Developer

  • DevOps Engineer

  • Data Engineer

Need to know before starting?

  • Basic understanding of web development and servers.

Hello
This is

2,686

Learners

182

Reviews

261

Answers

4.7

Rating

3

Courses

현재 공동창업한 작은 스타트업 Ninjalerts에서 CTO역할로 일하고 있습니다. Ninjalerts는 이더리움 블록체인 데이터를 기반으로 NFT 거래 정보들을 실시간으로 알려주는 서비스에요!

전에 만나씨이에이에서 개발 팀장으로 있었어요. 시작은 기획자였는데 개발자가 부족한 탓에 외주를 맡기려다가 직접 개발할 기회가 생기면서 운 좋게 개발자로 전향했어요. 이후 자사몰을 자체 개발하면서 이커머스 개발팀장을 맡았어요.

온라인에 나온 다양한 좋은 자료들 덕분에 빠르게 성장할 수 있었어요. 제 노하우가 여러분들에게도 도움이 되길 바랍니다 :) Linkedin 프로필

Curriculum

All

117 lectures ∙ (14hr 29min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

43 reviews

4.8

43 reviews

  • 하이님의 프로필 이미지
    하이

    Reviews 23

    Average Rating 4.5

    3

    100% enrolled

    커리큘럼 좋습니다. 가상 서버와 도커까지 한 번에 훑을 수 있어서 좋아요. 전반적으로 클라우드 서비스에 대해서 개괄적으로 훑고 싶은 분들에게 추천해요. 어떤 개념에 대해서 설명할 때 사용한 도표같은 것도 공유되면 더 좋았을건데 이 부분은 조금 아쉬운 부분이긴 합니다만 뭐 이해되는 부분이라 그냥 아쉬운 정도. 전반적으로 즉석에서 설명하면서 강의를 진행하는 느낌입니다. 그래서 좀 설명이 정리가 안 된 것 같다고 생각될 때가 많아 여러 번 봐야 하는 경우가 꽤 많습니다. 나중에 자세히 알려준다고 하고서 안 알려주는 것들도 좀 있어요. 이러한 부분 때문에 대본이 없고 즉석에서 설명하나 생각이 들었습니다. 그리고 영어를 좀 많이 써서 무슨 말이지 싶을 때가 종종 있어요. 맘에 드는 부분도 크고 아쉬움도 큰 강의입니다.

    • jay님의 프로필 이미지
      jay

      Reviews 1

      Average Rating 4.0

      4

      100% enrolled

      좋은 강의입니다. 빠르게 인프라에 관해 들을 수 있었습니다. 하지만, 강의가 끝나고 시간이 지나서 리뷰하려고 보니 다시 들어야 하는 아쉬움이 있네요. 기억을 되돌아보기 위해서라도 강의자료가 있다면 좋을 거 같습니다. 좋은 강의 감사합니다.

      • 김시훈 (도도소프트)
        Instructor

        좋은 의견 감사합니다~ 다음 강의 제작할 때 참고하겠습니다!

    • ybsong님의 프로필 이미지
      ybsong

      Reviews 1

      Average Rating 5.0

      5

      31% enrolled

      • 박태현님의 프로필 이미지
        박태현

        Reviews 1

        Average Rating 5.0

        5

        100% enrolled

        • MINHYEOK PARK님의 프로필 이미지
          MINHYEOK PARK

          Reviews 7

          Average Rating 5.0

          5

          31% enrolled

          Limited time deal

          $57,750.00

          25%

          $59.40

          sihoon's other courses

          Check out other courses by the instructor!

          Similar courses

          Explore other courses in the same field!