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)을 위해 애플리..
작년 가을에 작성해뒀던 글. 묵혀두기엔 아까워서 어떤 생각으로 살았었는지 두고두고 꺼내보려고 블로그에 기재한다. 그때와 지금은 상황이 다르고, 지금과 내일도 다르겠지.. 결정적으로 본문에서 재직했던 회사는 퇴사했다... 지금 몸 담고 있는 회사로 이직한 지 일 년 남짓 시간이 흘렀다. 정확히 일 년이 되는 시점에 회고를 쓰려고 마음먹었었는데 시간이 야속할 뿐이다. 현재 나는 대부분의 사람들이 스타트업에 갖는 걱정과 두려움 모든 걸 끌어안고 가고 있다. 이번 글에서는 그런 내용을 써보고자 한다. 여기서 말하는 스타트업은 다수의 투자를 받고 성장 궤도에 올라있는 회사를 지칭하지 않는다. 중소기업보다는 벤처에 가까운 회사가 되겠다. 이건 head of engineering라는 직책으로 프로덕트 팀을 이끌고 있..
이번에 한빛미디어 도서 서평단으로 받은 "처음 배우는 셸 스크립트". 우선 번역서가 아니라 저자가 한국사람이다. 그렇기 때문에 번역서를 읽으면서 이따금씩 찾아오는 괴로움이 없다. (한글을 읽고 있는데 영어를 읽는 느낌) 국내에 셸 스크립트 책이 얼마나 있는지는 잘 모른다. 알고 싶지도 않았고. 왜냐하면 그동안 셸 스크립트는 온라인에서 풍성하게 찾아볼 수 있었고 프로그래밍 언어로는 받아들여지지 않기 때문에 따로 공부해야 하는 필요성은 못 느꼈기 때문. 말은 이렇게 하지만 첫 직장이 리눅스 커널을 개발하던 회사였기 때문에 현업에서 선배들에게 치이며 셸 스크립트를 몸으로 익혔었다. 아무튼, 이 책을 처음 받았을 때는 "아, 이번에 리뷰 대상인 책들 재밌는 거 많던데 하필 다 아는 내용만 있을 셸 스크립트 책이..
terraform —— 이렇게 불안정한걸 왜 쓰는 거야! 싶다가도 고비를 넘길 때마다 코딩의 짜릿함이 있다. 더욱이 온라인에 있는 글(나 포함)은 대부분 예제 수준이라 고급 스킬은 다른 곳에서 주워야 한다. 특히 hashicorp GitHub에 issue 쪽에서 많은 내용이 다뤄지기 때문에 뭔가 해결하고 싶은 문제가 있으면 그 동네로 가면 된다. 아무튼, 테라폼이라는 키워드를 알고 모듈 활용해서 환경 분리되는 수준으로 5일 정도 걸려서 끝내고 우쭐했다. 공식문서 읽으며 개념잡는데 이틀, 모범사례 숙지 차원으로 책 한 권 읽고(하루), 구현에 다시 이틀. 근데 고-급 활용을 위해 고민하다보니 고개가 절로 숙여지네. 뭔가 인프라를 수정할 게 있어서 코드를 다시 열어보면 보이 스카웃 규칙에 따라 계속 손이 간..
providers, resource, data, module 등을 묶어서 뭐라고 표현해야 할지 잘 모르겠습니다. 예약어, 키워드 등으로 볼 수 있을 텐데 여기서는 키워드라고 통칭하도록 합니다. 이번 글에서는 테라폼에서 통용되는 키워드를 하나씩 살펴보도록 합니다. # providers 테라폼은 docker, AWS, GCP 등 2021년 02월 기준으로 700개가 넘는 다양한 프로바이더를 제공합니다. 그중 핵심이 되는 것은 아래처럼 퍼블릭 클라우드와 쿠버네티스입니다. 이런 프로바이더를 providers 블록을 통해 선언하고 사용할 수 있습니다. 더 많은 정보는 다음 링크를 참고하세요. https://registry.terraform.io/browse/providers # resource resource는 ..
이번 글에서는 테라폼에서 통용되는 주요 키워드를 통해 테라폼을 이해하도록 합니다. 테라폼은 크게 configure, plan, apply 세 가지의 단계가 있습니다. 풀어서 보자면 설정(configure)하고 실행 계획(plan)을 살펴본 후에 배포(apply)하는 구조입니다. 실행 계획이라고 하면 SQL에서 explain을 생각하면 되고 apply는 배포에서 일반적으로 사용되는 deploy 키워드를 생각하면 됩니다. 여러 팀원이 인프라를 같이 만지더라도 VCS에 의해 인프라가 관리되기 때문에 충돌을 피해 갈 수 있습니다. 이로 인해 서비스 가용성을 보장받을 수 있습니다. 사실 여러 사람이 동시에 같은 인프라를 만지는 상황 자체가 정상은 아니지만 말입니다. configure 설정은 HLC(Hashicor..
- Total
- Today
- Yesterday