728x90

AWS Route53은 Authoritative DNS로도 사용될 수 있고 Dynamic DNS 혹은 GSLB(Global Server Load Balancer)로도 사용될 수 있습니다. 쿼리 수량에 따라 단가가 매겨지고 (=TTL조정으로 어느정도 비용 통제도 할 수 있...) 레코드 수량에 대한 비용 부담이 없기 때문에 요청량이 많지 않은 경우 비용이 꽤 저렴한 편이기도 합니다.

여튼, 이런저런 목적으로 Route53을 사용하게 되면 Route53에 대한 모니터링을 하고 싶어지는게 인지상정입니다. CloudWatch에서 기본적으로 제공되는 Route53의 메트릭들이 있긴 하지만 DNS 쿼리 자체에 대한 성공, 실패와 같은 모니터링은 CloudWatch의 메트릭으로는 모니터링이 불가합니다. 

서버의 Access Log를 분석하는 것처럼 Route53의 쿼리 질의 및 결과를 모니터링 하려면 CloudWatch가 제공하는 Logs기능을 이용해야 합니다. Route53에 구성한 Zone으로 들어오는 요청을 CloudWatch Logs로 수집하고 다시 이것을 ElasticSearch 등의 데이터 분석 도구로 전달하는 모니터링 체계를 만들어 보도록 하겠습니다. 

 

Route53 Hosted Zone에 Query Logging 설정하기

Route53에서 관리하는 Zone을 Hosted Zone이라 부릅니다. 개별 레코드를 만들어 Route53에 위임하는 경우도 있고, 혹은 최상위 Zone 자체를 Route53에서 관리(=Authoritative NS)하는 경우도 있습니다. 어느 경우던 기본 단위는 Hosted Zone이고 로그 수집의 최소 단위도 Hosted Zone입니다.

Route53에 구성한 Hosted Zone에 대하여 로깅을 하기 위해서는 AWS CloudWatch Logs를 이용해야 합니다. CloudWatch Logs로 로그를 전달하기 위해서는 Route53에서 로그를 전송하고자 하는 Hosted Zone 관리 화면으로 이동하여 기능을 활성화 해야 합니다. Hosted Zone 관리 화면에 진입하면 우측 상단에 `Configure query logging`이라는 버튼을 확인하실 수 있습니다. 

Query logging 기능 활성화는 무척 단순합니다. 새로운 Log Group 을 만들기 위해 `Create log group`을 선택하고 만들고자 하는 Log Group의 이름을 입력하면 됩니다. 이미 만들어 둔 Log Group이 있다면 해당 Log Group을 선택해도 무방합니다. 다만 그 경우 다른 성격의 Log가 섞일 수도 있겠죠?

Log Group의 이름은 식별이 용이하도록 Place Holder에서 가이드 하는 것처럼 `/aws/route53/#zone이름#`을 사용하는 것을 권장드립니다. 물론 `/aws`를 넣는것이 필요한가는 잘 모르겠습니다만... 여튼 그렇습니다. 값을 입력하고 하단의 `Create`버튼을 누르면 Log Group이 생성되고 다시 Hosted Zone 관리 화면으로 이동하게 됩니다. 

 

 

CloudWatch Logs에서 생성된 Log Group 확인

Route53 관리 화면에서 Log Group 생성을 마쳤으면 CloudWatch 관리 화면으로 이동하여 생성된 Log Group을 확인해 보도록 하겠습니다. CloudWatch 관리 화면의 왼쪽 메뉴중 `Logs` 하위에 있는 Log groups 메뉴를 선택합니다. 생성되어 있는 Log Group 목록이 출력되면 검색창에 /aws/route53 을 입력하거나 Zone 이름을 입력하여 Log Group을 찾을 수 있습니다.

 

생성된 로그 그룹에 들어가보면 이미 로그가 쌓이고 있는 놀라운 현상을 경험할 수 있습니다. 여느 인터넷 서비스가 그러하듯 DNS의 세계 역시 수많은 크롤러, 봇들이 돌아다니며 취약점을 가진 서버들을 찾거나 정보를 수집하는 경우가 많습니다. 로그가 쌓이고 있다고 해서 당황할 필요는 없겠죠?

 

여기까지 완료 되었다면 로그를 모으는 과정은 완료되었다고 보셔도 됩니다. 이제 이렇게 모은 로그를 AWS가 제공하는 데이터 관련 도구로 전달하는 작업을 해보겠습니다. CloudWatch Log는 구독 필터(Subscription filters)를 통해 AWS의 다른 제품으로 로그를 전송할 수 있습니다. 

그중 가장 단순하게 구성할 수 있는 것이 Elasticsearch 로 전송하는 방법입니다. 물론 Kinesis Data Stream으로 전송하는 `Kinesis subscription filter`도 있고 Kinesis Data Firehose로 전송하는 `Kinesis Firehose subscriptino filter`도 있습니다. 하지만 이쪽으로 전달하여 로그를 분석하는 것인 본 포스팅 시리즈에서는 다루지 않습니다. 

(2022.04.21 Update)
AWS의 ElasticSearch가 OpenSearch로 바뀌면서 Actions 메뉴도 변경이 되었습니다!

 

여기부터는 조금 설정할 것들이 많아집니다. 다음 포스팅에서는 ES Cluster로 데이터를 보내기 위해 필요한 작업들을 하나씩 해보도록 하겠습니다. 


이어지는 글...

 

(#2/4) AWS Route53 DNS 요청 실시간 모니터링 체계 만들기

AWS Route53 DNS 요청 실시간 모니터링 체계 만들기 #1/4 AWS Route53은 Authoritative DNS로도 사용될 수 있고 Dynamic DNS 혹은 GSLB(Global Server Load Balancer)로도 사용될 수 있습니다. 쿼리 수량에 따라..

ondemand.tistory.com

 

 

(#3/4) AWS Route53 DNS 요청 실시간 모니터링 체계 만들기

AWS Route53 DNS 요청 실시간 모니터링 시스템 만들기의 세번째 포스팅입니다. 네번째까지 구성되어 있는 컨텐츠이지만 내용들은 짧막 짧막하니 아는 부분은 팍팍~ 넘어가시고 막히는 부분들을 확

ondemand.tistory.com

 

(4/4) AWS Route53 DNS 요청 실시간 모니터링 체계 만들기

여기까지 잘 따라오셨나요? Subscription filter도 설정했으니 이제 끝이야!! 라고 하기에는 아직 할 일이 조금 남아 있습니다. 필요한 준비는 대충 되었지만 실제로 Elasticsearch에 접근하기 위한 계정

ondemand.tistory.com

 

AWS에 대한 체계적인 공부가 필요하다면 아래의 Udemy 강의를 추천드립니다!

 

[NEW] Ultimate AWS Certified Cloud Practitioner - 2021

Pass the Amazon Web Services Certified Cloud Practitioner CLF-C01 exam, Practice Exams included with explanations!

www.udemy.com

 

본 포스팅은 제휴마케팅을 통해 소정의 수수료를 지급받을 수 있습니다.

728x90
728x90

파이썬을 이용한 머신러닝 학습을 하다보면
여러가지 알고리즘을 구현한 패키지를 많이 쓰게 됩니다. 
알고리즘 자체를 이해하고 구현하려는 것이 아닌 이상
잘 정비되어 등록된 패키지를 쓰는 것이 훨씬 유용합니다.

그 중 하나가 LightGBM으로 Gradient Boosting Model 알고리즘의 구현체입니다. 
이름에서 알 수 있는 것처럼 Light 가 붙어 있기 때문에 
최대한 가볍고 빠르게 GBM 알고리즘 방식으로 
데이터를 분석하기 위해 사용되는 알고리즘 입니다. 

여튼, 참 좋은 물건이지만 가끔 pip로 설치되지 않을 때가 있습니다. 
설치가 잘 안되는 경우 직접 코드를 다운로드 받아 빌드할 필요가 있습니다. 

설치방법 #1. pip install lightgbm

가장 기본적인 설치방법입니다. 
pip를 이용해서 lightgbm 을 설치하는 방식이죠. 
네, 이걸로 잘 되기만 했다면 이 포스팅을 쓰고 있지도 않을 것 같습니다 ㅎㅎ

pip install lightgbm

 

설치방법 #2. homebrew를 이용한 설치 (macOS)

제가 mac을 쓰고 있어서...homebrew 를 이용한 설치 방법도 정리해 봅니다. 
homebrew 에서도 패키지 이름이 lightgbm 으로 되어 있기 때문에 
brew install lightgbm 명령을 이용하시면 되겠습니다. 

brew install lightgbm

설치방법 #3. GitHub에서 소스코드 받아서 빌드하기

#1, #2의 방법으로 설치가 잘 되지 않았다면 GitHub에 업데이트 된
lightgbm 소스코드를 다운로드 받아 cmake나 gcc로 빌드할 수도 있습니다. 

////////////////////////////////////// using cmake 
// Install CMake, if not installed
brew install cmake

// Install OpenMP
brew install libomp

// Build and Install
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
mkdir build
cd build
cmake ..
make -j4

////////////////////////////////////// using gcc
// Install CMake, if not installed
brew install cmake

// Install gcc
brew install gcc # -> CHECK GCC VERSION!!

// Build and Install
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
export CXX=g++-7 CC=gcc-7  # -> USE INSTALLED GCC VERSION!!
mkdir build
cd build
cmake ..
make -j4

 

제 경우는 #3의 cmake 활용 방법으로 설치할 수 있었습니다. 
즐거운 머신러닝 학습 되시길 바랍니다~!

더 자세한 소스 기반 빌드는... 아래쪽입니다!

 

Installation Guide — LightGBM 3.3.2.99 documentation

© Copyright 2022, Microsoft Corporation. Revision 32a7f10d.

lightgbm.readthedocs.io

 

728x90
728x90

서버를 운영할 때 중요한 것중 하나가 디스크가 꽉 차지 않도록 유지하는 것입니다. 
디스크가 꽉 차게 되면 여러 어플리케이션들이 오동작 할 수 있으며 
심각한 경우 로그인이 어려워질수도 있습니다. 

디스크 용량 확인

디스크가 꽉 찼는지 확인하기 위해서는 df 명령을 사용합니다. 

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        40G   40G  372M 100% /
devtmpfs        1.9G     0  1.9G   0% /dev

 

이제 용량을 많이 차지하는 파일을 찾아보겠습니다.

폴더별 용량 확인

루트 경로에서 du 명령을 사용해 폴더별 사용량을 체크해 볼 수 있습니다.
미쳐 캡쳐하기 전에 파일을 삭제, 정리하는 바람에 아래 예제에는 큰 용량의 파일이 보이진 않네요

$ sudo du -sh * | sort -hr
3.8G    usr
1.9G    var
1.6G    home
218M    opt
205M    boot
200M    run
35M     etc
764K    tmp
196K    root
0       sys
0       srv

파일 삭제 후에도 용량이 안늘어난다면?

간혹 파일 삭제 후에도 용량이 확보되지 않을때가 있습니다. 
이 경우 활성 프로세스나 좀비 프로세스가 파일 디스크립터를 들고 있어서일 가능성이 높습니다. 
이때는 lsof 명령을 이용해 문제가 되는 프로세스를 식별할 수 있습니다. 

$ /usr/sbin/lsof / | grep deleted
COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
...

PID 컬럼에서 프로세스 ID를 확인한 후 ps 명령으로 재차 확인을 합니다. 
문제의 프로세스를 kill -9 #PID# 등의 명령으로 종료한뒤
lsof 명령을 다시 실행하면 문제의 FD 들이 삭제된 것을 확인할 수 있습니다. 

$ kill -9 12345
$ /usr/sbin/lsof / | grep deleted

이후 df 명령을 사용해서 디스크 용량을 확인하면
공간이 확보된 것을 확인할 수 있습니다. 

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        40G  7.8G   33G  20% /
devtmpfs        1.9G     0  1.9G   0% /dev

 

Udemy의 리눅스 커맨드라인 부트캠프 강의로 리눅스 기초 체력을 향상시켜 보세요!

 

【한글자막】 Linux Command Line 부트캠프: 리눅스 초보자부터 고수까지

커맨드 라인 고급 사용자로 거듭나기! 이 코스에서 배우는 커맨드를 통해 컴퓨터와 상호 작용하는 방식을 변경하여 모든 새로운 워크플로우와 전략을 사용하고, 컴퓨터를 다루는 데에 있어 여

www.udemy.com

 

본 포스팅은 제휴마케팅을 통해 소정의 수수료를 지급받을 수 있습니다.

728x90
728x90

React를 공부하고 있는 중입니다.
React를 공부하려다 그동안 확바뀐 Node.js 까지 익히는 중입니다 ㅎㅎ
npm의 유틸리티중 하나인 npx를 이용해서 create-react-app 패키지를 설치하고 
이를 이용한 보일러 플레이팅을 하는 것이 보고 있는 책의 예제입니다.

그런데!

놀랍게도 (언제나 그렇듯이) 개발 환경 구성부터 산넘어 산입니다. 
오늘 만난 에러는 npx를 이용한 React 보일러 플레이팅 중 발생했습니다. 

% npx create-react-app test
npm ERR! cb.apply is not a function

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/nopd/.npm/_logs/2022-02-05T17_54_47_354Z-debug.log
[ 'create-react-app@latest' ] 설치가 오류 코드 1로 실패했습니다

뭔가 발음하기에도 거시기한 cb.apply가 함수가 아니라는 에러!
아버지를 아버지라 부르지 못하고... 함수를 함수라 부르지 못하는 것인가 싶었지만 차치하고...
몇 군데 검색을 해봐도 딱히 쓸만한 방법을 찾질 못했습니다. 

구글 검색에서 걸린 것들은 대부분, 
- node_module 관련 경로를 다 지우고 다시 해봐라 
- node 버전을 올려라 
- 캐시를 지워라 
정도였던 것으로 기억됩니다.
안타깝게도 전부 저한테는 쓸모가 없었습니다. 

뭐가 문제일까 하다가 발견한 것이 Mac 환경에서 brew로 설치한 패키지들과 
설치된 경로를 알긴 어렵지만, 여튼 설치되어 있는 node 관련 패키지들이
서로 다른 경로에 있지만 후자가 우선순위를 갖게 되면서 문제처럼 보였습니다. 

사실 create-react-app 을 설치하기 전에도 
node의 버전이 brew에서 확인되는 것과 다르네? 하면서
/usr 하위에 만들어져 있던 심링크를 삭제했던 기억이 뇌리를 스쳤습니다. 

혹시 npx도..!?!?!?!?!

정답이었습니다. 
brew로 최신 버전의 npx를 설치했지만, 
이는 which npx 로 확인했을 때의 경로와 차이가 있었습니다. 

// #################### BEFORE
% which npx
/usr/local/bin/npx

// #################### AFTER
% which npx
/opt/homebrew/bin/npx

그렇습니다.
brew는 독립적인 생명체라, /opt/homebrew/bin 하위에 패키지를 저장하고 있었습니다.
원래 /usr/local/bin 경로에 있던 npx를 과감하게 삭제하니 모든것이 정상으로 돌아왔습니다!

% npx create-react-app test
Need to install the following packages:
  create-react-app
Ok to proceed? (y)
npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.

Creating a new React app in /Users/nopd/dev/clonecoding_practice/test.

Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts with cra-template...


added 1365 packages in 47s

169 packages are looking for funding
  run `npm fund` for details

Initialized a git repository.

Installing template dependencies using npm...
npm WARN deprecated source-map-resolve@0.6.0: See https://github.com/lydell/source-map-resolve#deprecated

added 33 packages in 2s

169 packages are looking for funding
  run `npm fund` for details
Removing template package using npm...


removed 1 package, and audited 1398 packages in 1s

169 packages are looking for funding
  run `npm fund` for details

8 moderate severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

Created git commit.

Success! Created test at /Users/nopd/dev/clonecoding_practice/test
Inside that directory, you can run several commands:

  npm start
    Starts the development server.

  npm run build
    Bundles the app into static files for production.

  npm test
    Starts the test runner.

  npm run eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

  cd test
  npm start

Mac 환경에서 brew를 이용해서 node를 설치했고 
혹시나 pkg 를 다운로드받아 설치한 적이 있는 것 같은 기억이 있다면 
포스팅에 소개한 방법을 이용해 평안한 하루를 만드시기 바라겠습니다!

 

 

728x90
728x90

IPv6 주소가 사용되는 곳이 많아지면서 curl 등으로 시험할 일도 종종 발생합니다.
curl은 오래전부터 IPv6에 대한 지원을 하고 있기 때문에 
왠만한 curl 버전을 사용중이라면 특별히 문제 없이 IPv6로 요청을 보낼 수 있습니다. 


브라켓을 이용하자

IPv4를 사용할때는 주소를 그대로 사용하는 것이 일반적입니다. 
다만 IPv6는 주소의 각 컴포넌트를 콜론(:)으로 구분하기 때문에 
명시적으로 IPv6 주소의 일부라는 것을 알려줄 필요가 있습니다. 

% curl 'https://[2404:6800:4004:80f::2004]' -v -k
*   Trying 2404:6800:4004:80f::2004:443...
* Connected to 2404:6800:4004:80f::2004 (2404:6800:4004:80f::2004) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none

가령 위의 예시는 www.google.com  에 대한 IPv6 주소로 curl 요청을 보내는 예시입니다.
브라켓으로 IPv6 주소를 감싸고 있으며, 다시 전체 URL을 따옴표로 묶고 있는 것을 볼 수 있습니다.
따옴표를 쓰지 않으면 파싱에 문제가 생기니, IPv6 주소로 요청을 보낼때는 전체를 감싼다고 인식하시면 되겠습니다. 

 

resolve 에서 IPv6 활용하기

IPv6 주소를 직접 curl 대상 주소로 사용할 때는 위와 같습니다. 
간혹 IP Spoofing 을 해야 하는 경우 --resolve를 쓰고 계실텐데요, 
이때도 다음과 같은 형태로 IPv6 주소를 활용할 수 있습니다. 

% curl https://www.google.com --resolve www.google.com:443:'[2404:6800:4004:80f::2004]' -I
HTTP/2 200
content-type: text/html; charset=ISO-8859-1
p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
date: Thu, 03 Feb 2022 08:37:37 GMT
server: gws
x-xss-protection: 0
x-frame-options: SAMEORIGIN
expires: Thu, 03 Feb 2022 08:37:37 GMT
...

--resolve를 사용할 때도 IPv6 주소를 브라켓으로 감싸고 따옴표를 넣어 주시면 되겠습니다. 
역시나 콜론이 많이 사용되고 있기 때문에 필요한 작업이라고 인식하면 되겠습니다. 

 

728x90
728x90

지난 수십년동안 전세계의 생산 기지는 중국이었습니다. 
많은 인구와 저렴한 노동비를 근간으로 전세계의 수많은 기업들의 생산공장을 중국으로 유치하면서 
전세계가 필요로 하는 많은 재화들을 상대적으로 저렴하게 공급해 왔습니다. 

2008년 리만브라더스 사태 이후 엄청나게 공급된 유동성은 
분명 인플레이션을 유발시켰어야 한다는 것이 우리가 아는 지식의 범위였지만 
전세계의 생산기지 중국을 통한 생산 비용의 감소 덕분(?)에 
오랫동안 인플레이션을 겪지 않을 수 있었다는 이야기가 있습니다. 

그렇지만 중국도 안팎으로 여러가지 변화가 생기면서 
더 이상 저렴한 생산기지로서의 역할을 하지 않을 가능성이 높아지고 있고
실제로 그런 영향들이 다양한 산업 분야에서 나타나고 있는 중입니다. 
여기에 더하여 급증한 물류비가 이런 현상을 심화시키고 있습니다. 

오랜 기간에 걸쳐 세계의 생산기지는 변화를 해 왔습니다. 
중국이 정말 오랫동안 세계의 생산기지를 자처해 왔지만 
이제는 그 뒤를 이을 곳이 어디가 될 것인지도 한번 고민해 볼 필요가 있습니다.

 

인도 India

인도는 중국과 함께 인구수 기준으로 세계 Top 2 입니다. 
수백개의 언어와 종교가 있지만 영국 식민지 기간동안 영어가 자리를 잡았고 (조금 독특한 영어입니다만)
여전히 암묵적으로 남아 있는 카스트 제도의 영향으로 
사회적인 직업의 계층이 나뉘어져 있는 것이 현실입니다. 

아이러니 한것은 글로벌 빅테크 기업에서 활약하는 인도 사람들이 많은 반면 
여전히 본국은 대도시들에서조차 물을 마음껏 먹는게 조심스럽고
직원들이 복통으로 출근을 못하는 것이 비일비재하기도 합니다. 

베트남 Vietnam

우리나라 기업들이 많이 진출해 있고, 특히 역사속으로 사라진 "대우"라는 이름이 
여전히 큰 영향력을 행사하고 있는 곳이 베트남이기도 합니다. 

베트남전에서 미국을 이기면서 공산정권이 수립된 이래
현재까지 사회주의 국가로 계속해서 성장을 해오고 있습니다. 
잘 알려져 있지 않지만 인구가 거의 9천만명에 이르고 있어 생각보다 인구가 많은 편입니다. 

 

인도네시아 Indonesia

셀 수 없이 많은 섬으로 이루어진 인도네시아는 
워낙에 풍부한 천연자원으로 큰 고민없이(?) 성장해 온 나라입니다. 
근래에 들어서 수도를 옮기고 사회적 인프라 자원을 새롭게 정비하느라 바쁜데
다수의 섬으로 이루어진 국가라 SOC가 쉽지 않다고 알려져 있습니다. 

우리나라의 남방 외교의 중심국가로 다양한 협력이 이루어지고 있으며 
주요 기업들이 많은 생산공장을 가지고 있고 늘려나가고 있기도 합니다. 

 

문화와 사회적인 차이에 대한 인식

엊그제 트위터에서 떠돌던 블룸버그 기사 하나가 눈에 들어왔습니다. 
애플의 기기 생산을 담당하고 있는 대만의 기업들이 최근 인도에 생산공장을 많이 늘리고 있는데 
현지 사람들과의 사회, 문화적인 차이로 인해 트러블이 많다는 기사였습니다. 

https://www.bloomberg.com/opinion/articles/2022-01-03/taiwan-s-tech-giants-foxconn-wistron-are-being-hit-by-india-culture-shock

 

Bloomberg - Are you a robot?

We've detected unusual activity from your computer network To continue, please click the box below to let us know you're not a robot.

www.bloomberg.com

 

저에게는 아주 오래전 삼성에서 근무하면서 제2의 고향이라 불렀던 곳이 "인도" 특히 "뉴델리" 입니다. 
남들 다 한두번씩 복통으로 쓰러져갈때 아무런 이상이 없었고 
도심을 돌아다니는 야생 개들과 함께 어울려 지냈고
고개를 까딱거리며 늑장을 피우는 현지 직원들과도 영어로 핏대를 올리며 싸우기도 했습니다. 

개인적으로 중국의 뒤를 이을 생산기지는 인도네시아라고 생각하고 있지만 
일하기 나름 편했던 곳은 또 인도라고 생각하고 있기에
블룸버그의 기사는 여러가지로 많은 생각을 하게 해줍니다. 

제가 일했던 상대 인도 직원들은 IT 종사자들이었고 영어도 문제 없었기에 (그들의 상사도)
문제는 어떻게든 해결하고 하드캐리 할 수 있었던 반면
평범한 인도인들은 그렇게 되지 못하는게 폭스콘 등이 겪는 어려움의 배경일 것 같기도 합니다. 

새로운 나라의 사람들과 일하는 것은 결코 쉽지 않은 일입니다. 
하지만 또 그 사람들의 입장과 문화를 이해하면 그렇게 어려운 일도 아닙니다. 
새로운 생산기지가 될 국가는 분명 우리와 어떻게든 여러가지로 함께 일을 하게 될 것입니다. 
열린 마음으로, 새로운 변화를 기다리는 현명한 사람이 되어야 하겠습니다. :-)

 

 

728x90
728x90

AWS에서 컴퓨팅 인프라를 운영하려면 머리가 아픕니다. 
늘 쓰던 것을 쓰면 큰 문제도 고민도(가령 묻지도 따지지도 않고 EC2) 없지만
새로운 제품을 써보려고 하면 일단 제품을 이해하는 것부터 허들입니다 ㅎㅎ
물론 한번 쓰기 시작하면 주머니가 탈탈 털릴 정도로 잘 쓰게 되긴 합니다. 

근래에 k8s 쪽을 다룰일이 계속 생기다 보니 AWS의 제품들에도 관심을 갖게 되었고
AWS가 제공하는 컨테이너 오퍼링을 한번 정리해보고 갈 필요가 생겼습니다. 
도대체 제품 설명만으로는 "뭥미?" 하는 경우가 종종 있으니...

그 중, 유명한 4가지 제품들을 한번 정리해 보겠습니다. 
순서대로 ECS, EKS, Fargate 그리고 ECR 입니다.


ECS, EKS vs. EC2, Fargate

ECS, EKS 를 하나로 묶고 EC2, Fargate를 하나로 묶을 수 있습니다. 
ECS는 Elastic Container Service로 Container 기반의 컴퓨팅 플랫폼이라 보면 되고 
EKS는 Elastic Kubernetes Service로 Container 기반이지만 k8s가 환경이라 보면 됩니다. 

이 두가지가 컨테이너에 대한 오케스트레이션을 담당한다고 보면
EC2, Fargate는 ECS, EKS가 동작하는 호스팅에 대한 레이어를 담당하는 제품들입니다. 
즉, EC2와 Fargate 위에 ECS, EKS가 동작한다고 이해하면 됩니다.

한줄 요약 : EC2, Fargate는 컨테이너를 위한 컴퓨팅 리소스이다 

 

ECS vs. EKS

그렇다면 ECS와 EKS는 어떤 차이가 있을까요?
둘다 컨테이너 오케스트레이션 환경이라는 공통점을 갖고 있지만 
ECS는 AWS 에서만 제공되는 오케스트레이션 환경이라 타플랫폼으로의 이식성이 떨어지지만
EKS는 쿠버네티스 환경이라 플랫폼간 이전이 더 용이합니다. 

한줄 요약 : ECS는 AWS Only, EKS는 범용 k8s

 

EC2 vs. Fargate

EC2는 워낙 유명하니 다들 잘 아실겁니다. 
쉽게 생각해서 가상머신(VM)이라고 봐도 무방합니다. 
즉, 독립된 환경이 있고 운영체제를 갖고 있는 컴퓨팅 리소스입니다. 

반면 Fargate는 가상머신보다 더 추상화된 컴퓨팅 환경입니다. 
서버 없이 코드를 실행하는 람다 Lambda 를 서버리스 Serverless 라고 부르는 것처럼
Fargate는 EC2의 서버리스 버전이라고 생각할 수 있겠습니다. 
서버가 없는 컴퓨팅 환경이 Fargate 입니다

한줄 요약 : 독립된 운영체제가 있으면 EC2, 서버리스 컴퓨팅 환경은 Fargate

참고 : https://aws.amazon.com/ko/blogs/korea/how-to-choose-aws-container-services/

 

AWS에서 어떤 컨테이너 서비스를 이용해야 하나요? | Amazon Web Services

“AWS에서 어떤 컨테이너 서비스를 이용해야 하나요?”는 여러분들에게 가장 많이 받는 질문 중 하나입니다. AWS는 다양한 고객의 요구를 충족하고자, 광범위하고도 폭넓은 서비스를 제공하다 보

aws.amazon.com

 

Considerations

ECS와 EKS를 봤을때 느낌적 느낌으로 EKS가 비용이 더 나올것이라고 예상됩니다.
네, 정확히 그렇고 ECS가 비용적으로는 EKS 보다 저렴합니다. 
하지만 ECS는 k8s가 아니기 때문에 이야기 한 것처럼 이식성이 떨어집니다. 

어떤 플랫폼을 쓰던 비용을 계속 체크하면서 써야 하는 것이 퍼블릭 클라우드입니다. 
ECS, EKS, 그리고 EC2, Fargate...!
여러분의 선택은 무엇입니까? :-)

728x90
728x90

IT 분야에서 근 2~3년 동안 가장 뜨거운 화두는 역시 쿠버네티스 Kubernetes 입니다. 
그동안 리눅스에 대한 지식이 DevOps, Infrastructure Engineer의 기본 소양이었다면
이제는 쿠버네티스에 대한 지식이 가장 뜨거운 화두입니다.

쿠버네티스를 실전에서 써볼 환경이 되지 않는다면 
역시 자격증 공부를 통해서 지식을 쌓는 것이 좋습니다. 
다만 쿠버네티스 자격시험은 랩 중심의 시험이기 때문에 
단순히 암기하고 답을 찾는 시험이 아니라서 준비가 쉽지는 않다고 합니다. 


CKAD 강의 추천 - 뭄샤드 형님의 Udemy 강의!

CKAD는 Certified Kubernetes Application Developer 의 약자로
개발자가 쿠버네티스 환경에서 동작하는 어플리케이션을 설계, 개발할 때 필요한 
쿠버네티스 기본 지식과 클라우드 네이티브 환경에 대한 지식을 테스트 하는 시험입니다. 

CKAD 일타강사, 뭄샤드 형님

유데미 Udemy 에서 가장 많은 수강생을 갖고 있는 강의가
바로 쿠버네티스 강의 계의 아이돌, 뭄샤드 형님의 CKAD 강의입니다. 
연초라 그런지 할인중이라 12,000원에 Unlimited 강의 수강이 가능합니다. 

뭄샤드 형님은 따로 Kode Kloud 라는 본인의 서비스도 운영중이며 
유데미 강의 수강자들을 대상으로 Kode Kloud 에서 랩을 무료로 참여할 수 있도록
각 강의에서 리딤 코드도 제공하고 있습니다. 

이론 강의는 유데미에서 듣고 Kode Kloud에서 무료로
랩 실습까지 해볼 수 있는데 가격이 참 착하죠?
연초라 할인이 많이 들어가 있는 느낌입니다!

=> 뭄샤드의 CKAD 유데미 강의 살펴보기 [바로가기]

 

CKA 강의 추천 - 역시, 뭄샤드 형님의 Udemy 강의!

CKA는 Certified Kuberneted Administrator 의 약자로 
DevOps 엔지니어나 Infra Engineer를 위한 Administrator 역량 시험이라 보면 되겠습니다. 
클라우드 네이티브 환경에서의 개발 보다는 아케텍쳐 설계와 운영, 관리에 촛점이 맞춰져 있습니다. 

CKA도 일타강사는 뭄샤드 형님!

2만원 정도로 할인 판매할 때 샀던 강의인데
역시 연초라 12,000원에 Unlimited 강의 수강이 열려 있습니다.
CKAD 와 마찬가지로 Kode Kloud 강의가 같이 제공됩니다.

=> 뭄샤드의 CKA 유데미 강의 살펴보기 [바로가기]

 

새해 맞이 유데미 신년 스타터 팩 보너스도 받자!

유데미는 온라인 강의로 유명한 곳인데요,
2022년 신년을 맞이하여 여러가지 프로모션이 진행중입니다. 
개별 강의 할인과 더불어 "신년 스타터 팩 보너스"가 제공되고 있습니다. 

 

1월 6일까지 어떤 강의든 구매하는 분들에게 제공된다고 하니
기왕 2022년 새로운 공부를 시작하기로 마음 먹었다면
지금 바로 강의를 구매하고 신년 스타터 팩 보너스도 받아 보세요!

참고로 유데미는 30일 무상환불제도를 시행하고 있습니다. 
구매한 강의가 생각보다 별로라고 생각되면 30일 이내에 리펀드 요청도 가능하니
싸다고 사는게 아닌, 나한테 진짜 필요한 강의를 찾아
부담 없이 지식을 늘려나가 보시기 바랍니다!

=> 유데미 2022년 할인 강의 자세히 살펴보기 [바로가기]


2021년 마지막 날까지 열심히 CKA 강의를 들었습니다. 
진도율 100% 채우고 이제 Kode Kloud 에서
랩 실습과 함께 모의 시험을 가지고 연습하는 중입니다. 

1월중으로 CKA를 먼저 취득하고 
곧 CKAD 까지 2월내에 취득해 보도록 해야겠습니다!

 

 

(추가. 2022.09)
참고로, 추천해드린 뭄샤드 형님의 CKA 강의를 듣고 2022년 9월 시험에 합격했습니다. 시험 합격 후기와 시험 꿀팁, 가상 시험 환경에 대한 이야기는 다음의 포스팅에서 간략하게 정리를 해보았습니다. 시험을 준비하고 계시다면 조금이나마 도움이 될 것 같습니다!

 

따끈따끈한 CKA(Certified Kubenetes Administrator) 2022 버전 자격 취득 후기(2022.09월)

참 오래걸렸습니다. 처음 CKA 자격증을 취득해 보자고 생각했던 것이 작년 이맘때이니 정확히 1년되는 시점에 자격증을 취득했습니다. 이걸 정확히 기억하는 이유가, 시험 응시를 계획하던 시점

ondemand.tistory.com

 

 

본 포스팅은 제휴마케팅을 통해 일정 수수료를 지급 받을 수 있습니다. 
다만 실제 CKA 강의를 수강하면서 감명받아
자발적인 홍보를 하고 있다는 점 참고하시기 바랍니다!

728x90

+ Recent posts