
이전 글에서 Airflow란 무엇인지 알아봤습니다. 이번 글에서는 플랫폼을 구축해보고 기본적인 터미널 명령어를 살펴보도록 하겠습니다. 위에 그림에 있는 것처럼 airflow를 구축하기 위해서는 webserver, scheduler, worker, database까지 함께 움직이는 서비스가 많습니다. 이것들이 조합되면 airflow라고 하는 워크플로 플랫폼이 완성되는 겁니다. 여기 있는 서비스를 하나씩 설치하면서 고생하기에는 우리의 시간이 넉넉하지 않죠? 이번 글은 airflow를 제일 빠르고 간편한 방법으로 만날 수 있는 docker-compose를 통한 설치 방법을 알아봅니다. # docker로 airflow 설치 airflow를 운영하려는 환경에 docker-compose가 설치되어 있는지, 설치되어..

Airflow는 Airbnb에서 2014년 10월 시작된 오픈소스 프로젝트입니다. 오픈소스로 2015년 6월 발표되었으며 2016년 3월에 Apache Software Foundation에 인큐베이팅되었어요. 그리고 2019년 1월 아파치 재단은 Apache Airflow를 탑티어 프로젝트로 발표했습니다. 자, 그럼 Airflow가 무엇인지 천천히 살펴보도록 하겠습니다. airflow는 workflow를 구축하고 실행할 수 있는 하나의 플랫폼입니다. 워크플로라는 단어가 모든 것을 설명해주는데요, airflow에서 워크플로는 DAG(Directed Acyclic Graph)으로 표시되며 세부사항으로는 개별 작업을 포함해서 종속성 및 데이터 흐름을 정렬하게 됩니다. 이게 다 무슨 소리인가 싶을 수 있는데요...

아직 한국에서는 엔터프라이즈 환경에서 파이썬을 다루는 곳은 흔하지 않다. 서비스가 궤도에 오르기 전이거나 MSA의 일부분으로 선택되는 경우는 종종 봤지만 말이다. 아 물론, 여기서 이야기하는 부분은 서비스의 백엔드이다. 데이터 엔지니어링이나 머신러닝을 다루는 분야에서는 단연 파이썬은 독보적인 언어니까. 아무튼, 이런 시국에 한빛미디어에서 아주 묵직한 책이 나왔다. 무려 "Architecture Patterns with Python" TDD, DDD, EDM까지 적용한단다. 1부는 비교적 가볍다. 도메인 모델링을 지원하는 아키텍처 구축이라는 제목 아래 저장소 패턴과 추상화, 작업 단위 패턴을 이야기한다. 가볍지만 익숙하지 않다면 호락호락하지 않다. 파이썬 문법이야 당연히 아주 잘 알고 있다는 전제로 내용이..

블로그에 AWS Elastic Container Service 관련해서 몇 편의 글을 연재했고, 아직 발행하지 못한 글도 있지만... 프레젠테이션 정리를 먼저 서둘렀다. 용도는 컨테이너 서비스에 관심 있는 조직 구성원의 흥미를 풀어주는 차원. 우선 목차를 크게 구분하면 ECS의 기초를 설명하고, 가볍게 K8S와 비교할 생각이다. 그리고 자원 사용 부분에서 Fargate와 EC2 비교, EC2로 운영할 때 비용이나 Stateless가 가능하다면 Spot Instances에 대한 부분 검토까지 언급할 생각이다. 로그를 다루는 부분도 쓰긴 해야 했지만 지면을 크게 할애하지 않았다. 워낙 간단한 설정이 끝이라서 딱히 쓸 내용이 없다 (웃음) 수백 개의 컨테이너를 오케스트레이션 하며 발생할 수 있는 문제들을 극복..

국내에는 GCP( Google Cloud Platform )와 관련된 책이 워낙 귀하다 보니 이번에 한빛미디어에서 발간된 "이야기로 배우는 구글 빅쿼리"는 반가울 수밖에 없다. 게다가 빅쿼리에 포커싱 된 책이라니! 빅쿼리는 위키백과에 아래와 같이 정의되어 있다. 빅쿼리는 페타바이트급 이상의 데이터에 대해 스케일링 분석을 가능케 하는 완전 관리형 서버리스 컴퓨팅 데이터 웨어하우스이다. 빅쿼리는 2010년 5월 발표되었으며 2011년 11월 일반에 공개되었다 데이터 다루는 일을 업으로 하는 사람이 아니라면 어쩌면 생소할 수 있는 기술이지만 BigQuery는 빅데이터 플랫폼으로 AWS의 Redshift와 함께 양대산맥을 이루고 있다. 더욱이 Google Cloud 하면 빅쿼리가 연상될 정도의 GCP의 대표적인..

AWS에서 EC2를 제 돈 주고 쓰면 많이 손해입니다. 비용을 절약할 수 있는 몇 가지 방법이 있는데요, SP (Savings Plans) RI (Reserved Instances) Spot 이렇게 기본적으로 세 가지를 언급할 수 있겠습니다. 이번 글에서는 Spot의 설명은 아니고, 그래서 얼마나 할인되는데? 에 대한 이야기를 해보려고 합니다. 위에 그림에서 보여지듯이 Spot Instance 가격은 c5.large 기준으로 리전 별로 차이는 보이지만 최대 64%까지 할인되는 것을 볼 수 있습니다. 한 달이면 $44 차이까지 발생하죠. 이런 인스턴스 열 대를 운영하면 $440입니다. 절대 무시할 수 있는 수준이 아닙니다. 위에 표를 볼 수 있는 경로는 EC2 -> INSTANCES -> Spot Requ..

AWS에서 선택 가능한 EC2 인스턴스 타입은 범용, 컴퓨팅 최적화, 메모리 최적화, 가속화된 컴퓨팅, 스토리지 최적화로 나눌 수 있습니다. 이번 글에서는 범용 타입에서도 버스터 가능한 인스턴스 타입을 소개합니다. 버스트(burst) 가능한 인스턴스 타입은 현재(2021-05-06) 기준으로 T2, T3, T3a, T4g 네 가지 타입이 존재하고 각각의 타입은 CPU와 메모리에 따라서 nano, micro, small, medium, large, xlarge, 2xlarge로 나누어집니다. T 타입 인스턴스에는 CPU credits이라는 개념이 존재하는데 CPU 유휴시간에 따라 credits을 획득하고, CPU가 사용되면 사용률에 따라 획득한 크레딧을 소모하게 되는 구조입니다. 이 의미를 상세히 이해하기..

ECS 클러스터 안에 서비스를 등록할 때 선택하게 되는 Service type에 대해서 살펴보겠습니다. 먼저 옆에 i 아이콘에 마우스를 올려서 팝업 도움말을 살펴보면 다음과 같은 문구를 볼 수 있습니다. Replica services place and maintain a desired number of tasks across your cluster. Daemon services place and maintain one copy of your task on each container instance. If a capacity provider strategy is used, the DAEMON service type is not supported. 위의 내용은 아래와 같이 정리하고 사용할 수 있습니다 # R..
SQLAlchemy는 애플리케이션 개발자에게 SQL의 모든 기능과 유연성을 제공하는 Python SQL 툴킷 및 객체 관계형 매퍼입니다 (공식 홈페이지 소개 문구). 모든 데이터베이스 객체를 다룰 때 신경 써야 하는 부분이 트랜잭션(Transaction)인데 SQLAlchemy도 예외는 아닙니다. 공식 홈페이지의 예제를 통해 기본적인 트랜잭션 관리를 살펴봅시다. from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker # an Engine, which the Session will use for connection # resources engine = create_engine('postgresql://scott:tiger@l..

이번에 시의적절하게 아주 재밌는 책을 리뷰하게 됐다. 바로 "배워서 바로 쓰는 14가지 AWS 구축 패턴". 현재 재직하고 있는 회사에서 AWS를 사용하고 있으며 특히 Container Service와 DW를 위해 Redshift를 들여다보고 있는 와중에 만난 책이다. 과거에도 물론 퍼블릭 클라우드를 여럿 사용해왔지만 이 책이 반가웠던 이유는 여러 가지 실제 사례를 들고 있기 때문이다. 책의 앞 부분은 클라우드가 처음인 독자를 위해 아주 섬세한 부분까지 설명을 해준다. 리전, 네트워크, VPC 등. 그리고 EC2 인스턴스 생성부터 차근차근 첫 단추를 꿰어간다. 순간 "이 책 입문서 아니야?"라는 생각이 들 정도. 하지만 방심하지 마시라, 책의 진도는 순식간에 나간다. 서비스 구축에 가장 흔하면서 일반적인..

개인 블로그에 재직하는 회사와 관련된 글을 작성하는 건 언제나 그렇듯 조심스럽습니다. 이 글은 애드테크 기반 모바일 퍼포먼스 마케팅 회사 '매드업'에 합류한 과정과 맡은 업무, 회사를 소개하고 있습니다. 본인은 회사를 대표하지 않으며 본문은 지극히 개인적인 견해입니다. 각자의 상황이 있고 바라보는 시각도 다르기 때문에 얕은 참고만 부탁드립니다. 유독 많은 일이 있었던 작년 말, 시원하게 사표를 내던졌다. 근무했던 곳은 이커머스 분야로 영세한 스타트업이었다. 그러다 보니 Tech Lead/Product Manager/Product Owner/People Lead 등 너무 많은 role을 수행했고 나는 누구인가에 대한 끝없는 질문을 던졌다. 아, 이렇게 많은 role을 맡아서 진행하는 게 정말 가능한 거냐고..

컨테이너와 컨테이너 인스턴스라는 용어로 본문에 많이 등장합니다. 컨테이너 인스턴스는 클러스터에 묶여있는 EC2 인스턴스를 나타냅니다. 표준 표현을 따르다 보니 본문을 읽는데 어려움이 있을 수 있습니다. 이번 글에서는 Task, Container에 CPU와 Memory 설정에 대해 알아봅니다. ECS를 처음 접하면 리소스를 설정하는 곳이 너무 많아서 정신이 혼미해질 정도인데요, 추려보면 다음과 같습니다. 인스턴스의 CPU, Memory 설정 (인스턴스 타입에 따라 고정, 혹은 custom 사용) task의 CPU, Memory 설정 container의 CPU, Memory 설정 위에서 아래로 갈수록 작은 개념으로 이어집니다. 직감적으로 보면 container는 task 안에서 돌기 때문에 당연히 task에..

ECS를 구축, 관리하기 위해서는 그 안에서 사용되는 용어를 이해해야 합니다. 이번 글에서 ECS에서 통용되는 용어들의 개념을 이해하도록 합니다. 자원 개념 위에서 아래로 내려갈수록 큰 개념으로 생각하시면 됩니다. container는 ECS에서 가장 작은 단위, cluster가 가장 큰 단위입니다. # container 단순히 시야가 제한된 리눅스 프로세스입니다. namespace 분리로 컨테이너 환경 안에서 호스트의 프로세스 목록을 볼 수 없고, 루트 디렉터리 변경으로 호스트의 디렉터리를 볼 수 없도록 제한합니다. (chroot) 끝으로 제어 그룹을 통해 컨테이너가 접근할 수 있는 자원을 제어합니다. (control group) 우리가 알고 있는 바로 그 컨테이너의 원리죠? # task definiti..
본문을 읽기 전에 Zombie, Orphan 프로세스란 무엇인지 알고 있을 필요가 있다. 관련된 내용은 다음 글에 매우 잘 정리가 되어 있으니 참고하기 바란다. - Zombie process reaping 에 대하여, Container에서 고려할 부분들 컨테이너를 생성할 때 한 개의 일만 처리하게 설계하면 좋겠지만 그렇지 못한 경우도 분명 생길 수 있다. 간혹 자식(child process)을 만들어서 일을 시켜야 하는 경우가 있는데 새로운 컨테이너를 생성하거나 API 통신으로 동작시키는 것보다 나은 상황이 있기 때문이다. 아무튼, 이렇게 자식 프로세스를 만들어서 일을 시켜보면 의도치 않게 자식이 고아가 되는 경우가 발생한다. 자식의 자식의 자식 이라던가... 뭐 물론 좋은 설계는 아니지만. 이런 경우가..
# 시간이 지나야 지로소 보이는 것들 퍼블릭 클라우드의 엔터프라이즈 서포트를 받으며 technical account manager가 회사에 상주하던 때가 있었다. 그때는 그게 얼마나 행복한 환경인지 몰랐다. 표현이 조금 이상하지만, 궁금한걸 몇 걸음만 이동해서 물어볼 수 있었기 때문에 개인적으로는 본전 뽑았다고 생각한다. 회사 차원에서는 글쎄. 워낙 비싼 분이라 나 혼자 뽑아 먹는 걸로는 부족했을 텐데. 아무튼, 그쪽 분야로는 걸어 다니는 스택오버플로 느낌이었는데.. 찰싹 붙어서 더 배웠어야 했다. 하하하 한편, 개발자가 마음껏 인프라를 만질 수 있는 환경도 장점이자 단점이다. 커리어 측면에서 스킬을 쌓는다고 생각하면 장점이고, 인프라 엔지니어나 데브옵스 엔지니어의 부재는 개발자의 리소스를 갉아먹는다. ..

이번에 진행하는 프로젝트를 AWS 환경에서 개발하면서 여러 가지 개념을 접했다. 특히 ECS(elastic container service)를 깊이 있게 보고 있는데 GCP에서 GKE(google kubernetes engine)를 살짝 다뤄봤던 경험 덕분이 많은 도움이 됐다. 아무튼, VPC부터 Security Group 등 알고 있는 개념들을 정리할 겸 책을 꺼내 들었다. 합리적인 구성으로 담백하게 쓰인 책이다. 특히 책의 제목처럼 "입문"을 위해 클라우드 시스템이란 무엇인지부터 퍼블릭 클라우드의 종류와 컴퓨팅 등 다양한 개념과 기초지식을 초반에 잘 풀어내 주고 있다. 주요 목차는 다음과 같다. 1장. 클라우드의 역할 2장. AWS 기본과 계정 등록 3장. Web 서버 구축 4장. Web 애플리케이션..

제이펍은 책의 리뷰를 작성한 사람들 중에 매달 우수 리뷰어를 뽑아서 도서를 보내준다. 지난달에 “테라폼 설치부터 운영까지”라는 책을 구입해서 읽고 맨 뒷 페이지에 적힌 도서 리뷰에 참가하라는 글을 보고 블로그에 적어놓은 리뷰를 보내보자”라는 생각이 들었다. 밑져야 본전이니 써놓은 리뷰를 보냈고 결과는 2월의 우수 리뷰어로 뽑혔다! 그리고 원하는 도서 한 권을 보내준다는 메일을 받았다. 어떤 책을 고를지 고민하다가 로버트 C.마틴의 “클린 소프트웨어”를 선택했다. 어차피 읽는 책, 재밌게 읽고 또 리뷰를 써봐야지. :) 좋은 책 보내주셔서 감사합니다 제이펍 ♥️

예전에 사놓고 묵혀뒀던 “Amazon Web Services로 시작하는 클라우드 입문” 책을 주말동안 빠르게 훑어봤다. 담백하게 기초에 충실한 책인데 AWS로 클라우드 입문하는 사람들에겐 꽤 도움이 될 듯. 책을 다 봤으면 필요한 기술을 깊이있게 리서치하고 모범사례를 통해 아키텍처를 공부하면 끝. 말은 쉽다. ㅎㅎ 한편, 어쩌다보니 AWS ECS를 다이브하고 있는데 전에 GKE를 통해 잡아뒀던 개념들이 많은 도움이 된다. 어디서 어떤 일을 하던지 일의 연결고리를 만들 수 있는 기술이 자산이 된다. 그래서 cloudformation을 안쓰고 다양한 클라우드 환경에서 쓸 수 있는 terraform을 공부한거고. 나를 AWS에 락인시키고 싶지 않거든. C언어만 주구장창 하던 내가 서비스 레벨로 올라올 수 있었..
예전 직장에서 ISMS 대비 때문에 강제로 SSM(AWS Systems Manager)을 브라우저에서 사용했었는데 이거 터미널에서도 되는거였구만. 무식하게 브라우저 몇 개를 띄워놓고 썼었는데말야. 아무튼, 직접 Systmes Manager 하나씩 설정해보니 원하는 것을 아두 쉽게 얻었다. 역시 직접 해보는거랑 차려준거 먹는거랑은 다름. - bastion host와 다르게 권한, 보안 두 마리 토끼를 한번에 잡음 - pem 관리는 이제 굿바이 - bastion host 서버가 필요 없으니 비용 절감 됨 - 터미널에서 뭔일이 일어나는지 다 기록되서 좋음. bash_history와 다르게 타이핑한 명령어 뿐만 아니라 화면에 뿌려진 결과도 다 기록되니까. cloudwatch 로그 비용은 비밀 GCP와 잠시 이별..

이번 글에서는 AWS에서 제공하는 대표적인 컨테이너 서비스 중 하나인 ECS의 기본 개념을 살펴보도록 합니다. ECS는 쿠버네티스 기반의 완전 관리형 컨테이너 오케스트레이션인 AWS EKS(Elastic Kubernetes Service), 그리고 옆동네 GCP의 GKE(Google Kubernetes Engine)와 비교할 수 있는데요, 여기서는 ECS에 초점을 맞춰서 설명합니다. ECS는 완전 관리형 컨테이너 오케스트레이션 서비스 입니다. 컨테이너와 오케스트레이션을 이해하기 위해 기존 서비스 방식을 살펴보면 다음과 같습니다. 애플리케이션을 인스턴스에 직접 설치해서 운영 진입 장벽이 낮아서 빠르게 애플리케이션을 개발&검증하는데 유리합니다 한편, 컴퓨팅 리소스의 수평확장(scale-out)을 위해 애플리..
- Total
- Today
- Yesterday