포스트

[AWS][EC2][Docker] 도커 강좌를 듣고..

안녕하세요, 요새 비가 많이 오니 항상 일기예보를 보고 밖에 무사히 다니시기를 바래봅니다.

sticker


저는 요새 AWS의 클라우드 백엔드 데이터베이스 서버 세팅, 특히 도커(Docker)를 이용한 세팅에 관심이 많았습니다. 도커란, 서버의 백엔드 환경 구성을 매번 새로 할 필요 없이 지난 번 했거나 다른 누군가가 만들어 놓은 환경 그대로 명령어 몇 번만으로 손쉽게 구축할 수 있도록 하는 기술입니다. 여기에 도커 컴포즈(Docker Compose)를 같이 사용하면, 여러 개의 도커이미지(여러 개의 패키지 레이어가 쌓여있는 백엔드 구성 그대로 구워진 상태)를 말아서(쌓아서) 한 번에 모두 빌드하고(docker compose up), 내릴 수도(down) 있습니다.

제가 클라우드 백엔드 서버 구성울 배우려고 했던 이유는 바로 게임이나 앱을 서비스 할 때 백엔드와 결합해서 하고 싶기 때문입니다. 보통 집을 지을 때, 가구부터 만들지 않고 집의 골격부터 만들 듯, 저도 게임이나 앱을 서비스하자는 목표를 가지고 나니, 막상 게임클라이언트 제작이나 앱 제작보다는 로그인, 데이터베이스 등 틀을 더 잘 갖추는 데에 우선순위가 생기는 것 같습니다. 그래도 다른 분들은 만들 수 있는 선에서 좀더 간소화된 백엔드를 구성하고 컨텐츠 제작으로 넘어가는 방식으로 더 효율적으로 공부하고 일하실 수도 있을 것 같습니다. 그런데 저는 욕심많지만 비효율적이고 호기심이 많아서인지 도커(docker)를 포함해 최대한 거창하게 백엔드를 구성해보고 연습해보고 싶었던 것 같습니다…

제가 예전에 작동시켜보았던 Fishnet MMO게임 템플릿 프로젝트에서는 도커로 postgresql 데이터베이스를 만들었었습니다. 그런데 상용화를 위해 만들어졌다고 보기에는 약간 부족한 템플릿이었기 때문에 로컬 WSL서버(윈도우 데스크탑에서 가상으로 만들 수 있는 리눅스 서버)에서 구동할 수는 있지만 AWS EC2에 올려서 구동하니 작동을 하지 못했습니다. 저는 북미에 거주하시는 Fishnet개발자들이 굉장히 유능한 사람들이라고 신뢰하고 있기 때문에 그 분들이 도커를 사용해 백엔드를 구성했다는 점에서 도커를 꼭 해야 하는구나 라는 마음을 가졌던 것 같습니다.

그런데 저의 당장의 가시적 목표는 5달러 정도 가격의 UniDB라는 유니티 데이터베이스 관리 에셋을 사용하는 것이었습니다. UniDB란, C# 코드로 이루어진 게임 클라이언트에서 UniDB만의 방식으로 데이터쿼리를 작성해서 서버로 전송하면 PHP 코드로 작성된 UniDB 웹서버가 이를 받아 mysql, mongdb, postgresql 등 연결된 여러 데이터베이스와 통신을 해주는 중간자 역할을 해주는 프로그램입니다. 기능이 매우 단순해서 확장성이 좋은 에셋이기 때문에 사용하고 싶었습니다. 이걸 사용하기 위해서 nginx 웹서버를 만들어보았었는데요, 굉장히 번거로웠었습니다.


그러다가 다행히고 감사하게도 인프런에 수강할 수 있는 도커 강의가 몇 개 발견했습니다. (뭘 만들지는 않고 자꾸 뭘 배우네요 ㅜ )ㅎㅎ 강의를 듣고, 도커를 알고 나니 nginx 웹서버를 만드는 것이 많이 편해졌습니다. 그리고 mysql 데이터베이스와 wordpress를 구축하는 것도 더 쉬워진 것 같습니다. 이번 포스팅은 그 강의들에 대한 소감을 간단히 나눠보고자 적게 되었습니다.


첫 번째 들은 강좌는 '잔재미코딩' 선생님의 '풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]' 강좌입니다.

굉장히 많이 배웠고 재밌었습니다. 강의에서 다룬 모든 코드와 설명을 별도의 수업자료로 제공해주셔서 강의 재생을 멈추고 따라할 때 굉장히 도움이 많이 되고 좋았습니다. 강좌를 듣고 나니 docker 사용에 익숙해질 수 있어서 좋았습니다.

https://inf.run/JeKH

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3] - 인프런 | 강의 본 강의는 풀스택 강의 시리즈 Part3 강의로 최신 서버 기술과 도커 기술을 탄탄하게 익히는 강의입니다. 본 강의는 실질적으로 도커를 내 기술 스택에 포함시킬 수 있도록, 도커의 다양한 옵션을 한땀한땀 테스트하고, 도커를 위해 이해가 필요한 리눅스등 관련 기술도 익히고,… 본 강의는 풀스택 강의 시리즈 Part3 강의로 최신 서버 기술과 도커 기술을 탄탄하게 익히는 강의입니다. 본 강의는 실질적으로 도커를 내 기술 스택에 포함시킬 수 있도록, 도커의 다양한 옵션을 한땀한땀 테스트하고, 도커를 위해 이해가 필요한 리눅스등 관련 기술도 익히고,…


두 번째 들은 강좌는 '김영헌' 선생님의 '따라하며 배우는 MySQL on Docker' 입니다. 비교적 친절한 강의자료가 제공되지는 않아서 아쉬웠지만, 위의 강좌와 마찬가지로 어디가서도 들을 수 없을 것 같은 강의였습니다. 특이하게도 mysql 도커 이미지 중에 centos기반으로 만들어진 percona라는 mysql도커 이미지로 시작하고 있었습니다. percona-mysql은 mysql을 좀더 좋은 성능을 내기 위해 percona라는 회사에서 튜닝을 한 것인 듯 합니다. 사용법은 mysql과 동일하다고 합니다.

https://inf.run/TQSB

따라하며 배우는 MySQL on Docker - 인프런 | 강의 길고 지루한 이론 대신 짧은 실습을 통해서 하나하나 배울 수 있고 하나씩 살을 붙이다 보면 어느새 전반적인 아키텍처 구성을 경험해 볼 수 있습니다., 도커 환경을 위한 MySQL 활용 튜토리얼,하나씩 직접 구현하며 내 손으로 익혀보세요. 주제 소개 📝 [사진] Docke… 길고 지루한 이론 대신 짧은 실습을 통해서 하나하나 배울 수 있고 하나씩 살을 붙이다 보면 어느새 전반적인 아키텍처 구성을 경험해 볼 수 있습니다., 도커 환경을 위한 MySQL 활용 튜토리얼,하나씩 직접 구현하며 내 손으로 익혀보세요. 주제 소개 📝 [사진] Docke…

이 두 번째 강좌에서는 데이터베이스 하나가 중단되면 여분의 데이터베이스가 그 자리를 바로 대신할 수 있도록 하기 위해 master, slave replication 구성이라는 걸 따라 구현해보았습니다.

나중에는 proxySQL, Prometheus, Orchestrator, Grafana라는 것까지 다루고 있었는데요..

강좌 후반에는 서비스 이용자의 규모가 커질 경우를 대비한 scale up, scale out을 해주기 위해 이와 비슷한 docker swarm이라는 기술을 다루고 있었습니다. 이는 동일 사양의 서버 3대에 똑같이 각각 설치를 해주고 이 3대 서버를 마치 하나인 것 처럼 사용하면서, 한 개의 서버가 장애가 생기면 다른 서버가 그 역할을 이어받는 기술이었습니다…..

강의 다 보고 따라해야지~라는 마음으로 받아 적어가면서 열심히 듣고 있었는데 점점 내용이 초 고난이도로 가는 것 같아 다소 당황스러웠습니다. ㅎㅎ ㅋㅋ 일단 EC2를 무료 티어 1개 분량을 넘어서서 3개를 운용하는 것 부터가 상시 켜두기에는 각오가 필요한 일이기 때문에 현 서비스 개발 시점에서는 가볍게 생각하고 적용할 기술이 아니구나 라고 느꼈습니다. ㅎㅎ

그런데 식견이 이전보다 많이 넓어진 듯한 느낌을 받아서 좋았던 것 같습니다. (20년 dba근무하신 전문가는 역시 다르시다는 걸 느꼈습니다.ㄷㄷ)


지난 포스팅에서 AWS 보안을 설정하는 데에 도움을 받았던 AWS관련 강좌가 하나 있었는데요, 바로 '양동준' 선생님의 '하루만에 만드는 express with AWS'입니다. 양동준님께서는 저의 블로그에도 몇 달 전에 이웃 신청을 주셔서 알고 있었습니다. 저는 아래 강의가 저에게 도움이 많이 될 것 같아서 들으려고 계획했습니다. (이 글을 보신다면, 좋은 강의를 만들어주셔서 감사드린다는 말을 전하고 싶습니다.)

https://inf.run/JWLF

하루만에 만드는 express with AWS - 인프런 | 강의 👩🏻‍💻하루 만에 배우는 expressjs 강의입니다. 여러분은 결과물을 무조건 들고 가며, 글이 아닌 시각적인 시퀀스다이어그램으로 로직 위주로 설명을 진행합니다., 자바스크립트와 함께백엔드 입문을 쉽게 해보세요! ☺️ 🎁 리뷰 이벤트 진행 중 🎁 리뷰를 남겨주… 👩🏻‍💻하루 만에 배우는 expressjs 강의입니다. 여러분은 결과물을 무조건 들고 가며, 글이 아닌 시각적인 시퀀스다이어그램으로 로직 위주로 설명을 진행합니다., 자바스크립트와 함께백엔드 입문을 쉽게 해보세요! ☺️ 🎁 리뷰 이벤트 진행 중 🎁 리뷰를 남겨주…


이상으로 오늘의 포스팅을 마치겠습니다. 감사합니다.

sticker

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.