본문을 읽기 전에 Zombie, Orphan 프로세스란 무엇인지 알고 있을 필요가 있다. 관련된 내용은 다음 글에 매우 잘 정리가 되어 있으니 참고하기 바란다. - Zombie process reaping 에 대하여, Container에서 고려할 부분들 컨테이너를 생성할 때 한 개의 일만 처리하게 설계하면 좋겠지만 그렇지 못한 경우도 분명 생길 수 있다. 간혹 자식(child process)을 만들어서 일을 시켜야 하는 경우가 있는데 새로운 컨테이너를 생성하거나 API 통신으로 동작시키는 것보다 나은 상황이 있기 때문이다. 아무튼, 이렇게 자식 프로세스를 만들어서 일을 시켜보면 의도치 않게 자식이 고아가 되는 경우가 발생한다. 자식의 자식의 자식 이라던가... 뭐 물론 좋은 설계는 아니지만. 이런 경우가..
이번 글에서는 AWS에서 제공하는 대표적인 컨테이너 서비스 중 하나인 ECS의 기본 개념을 살펴보도록 합니다. ECS는 쿠버네티스 기반의 완전 관리형 컨테이너 오케스트레이션인 AWS EKS(Elastic Kubernetes Service), 그리고 옆동네 GCP의 GKE(Google Kubernetes Engine)와 비교할 수 있는데요, 여기서는 ECS에 초점을 맞춰서 설명합니다. ECS는 완전 관리형 컨테이너 오케스트레이션 서비스 입니다. 컨테이너와 오케스트레이션을 이해하기 위해 기존 서비스 방식을 살펴보면 다음과 같습니다. 애플리케이션을 인스턴스에 직접 설치해서 운영 진입 장벽이 낮아서 빠르게 애플리케이션을 개발&검증하는데 유리합니다 한편, 컴퓨팅 리소스의 수평확장(scale-out)을 위해 애플리..
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..
인프라가 복잡하고 특히 development, staging, production 환경을 분리해서 사용하는 회사라면 IaC 도입이 필수입니다. 테라폼은 hashicorp에서 개발된 인프라 스트럭처를 효율적으로 구축, 변경, 관리하기 위한 도구(IaC)입니다. hashicorp은 한국에서 하시코프로 많이 통용됩니다. 앞에 hash를 보고 해시콥 이라고 읽어도 적당히 대화는 되지요도입 이후 기대되는 내용은 다음과 같습니다. # pros 인프라 변화 과정, 히스토리를 사용 중인 버전 관리 시스템(VCS)을 통해 형상관리할 수 있게 됩니다 인프라를 코드로 관리하면 애플리케이션을 형상관리 했을 때와 완벽하게 동일한 이점을 갖게 됩니다 누가, 언제, 왜 인프라를 변경 했는지 확인할 수 있고, 애플리케이션 코드를 리..
gem을 통해 terraforming을 설치하다가 아래와 같은 오류가 발생했습니다. $ gem install terraforming Fetching jmespath-1.4.0.gem Fetching aws-partitions-1.427.0.gem Fetching aws-eventstream-1.1.0.gem Fetching aws-sdk-core-3.112.0.gem Fetching aws-sdk-autoscaling-1.54.0.gem Fetching aws-sigv4-1.2.2.gem Fetching aws-sdk-cloudwatch-1.49.0.gem Fetching aws-sdk-dynamodb-1.59.0.gem Fetching aws-sdk-ec2-1.224.0.gem Fetching aws-..
프로그래밍을 하다 보면 필연적으로 메모리 사용량을 디버깅해야 하는 일이 생깁니다. 메모리 누수가 발생해서 디버깅을 해야 하는 경우도 있고 메모리 사용량이 비정상인 경우도 디버깅이 필요해요. 일부 언어는 힙 메모리 공간을 통째로 덤프 떠서 확인하는 일도 비일비재하죠. 이번 글에서는 파이썬 프로그램을 개발하면서 메모리 사용량을 추적하는 방법을 알아봅니다. 거창하게 시작했지만 파이썬에서 메모리 추적은 psutil 이 대표적입니다. 일단 사용 방법부터 바로 알아보고 조금 더 상세한 이야기를 해봅니다. 사용법은 심플합니다. 다음 공식 예제를 살펴보시죠. >>> import psutil >>> p = psutil.Process() >>> p.memory_info() pmem(rss=15491072, vms=8402..
Poetry는 "Python dependency management and packaging made easy."라는 모토로 움직이는 파이썬 의존성 관리 프로그램이다. conda, pyenv 등이 설치되어 있다고 가정했을 때 poetry의 위치는 아래 그림과 같다. 글의 전반에 걸쳐 이야기하겠지만 poetry는 가상환경을 만들 때 현재 시스템에 적용되어 있는 환경을 가져다 사용한다. 즉, conda 3.7 환경에서 poetry를 돌리면 파이썬 3.7 버전으로 가상환경이 만들어질 것이고, pyenv 3.9가 적용되어 있는 터미널에서 poetry로 install 하면 파이썬 3.9 버전으로 가상환경이 만들어진다. - see more # 주요 특징 - pip를 감추고 패키지와 디펜던시를 관리 함 ( 내부적으로..
파이썬은 인공지능, 빅데이터 분석/처리 트렌드와 함께 엄청난 인기를 얻었다. 전부터 마니아층이 두꺼웠지만, 본격적인 인기는 두 개의 트렌드와 함께했다. 파이썬이 없었다면 이 모든게 가능했을까 싶은 정도니까. 하지만 백엔드 개발 분야는 Spring Framework의 아성에 도전할 수 없을 정도로 레퍼런스가 밀리는 게 현실이고 Node.js, Go는 뛰어난 성능을 무기로 파이썬을 위협한다. "파이썬? 인공지능이나 데이터 분석할 때 적합하지! 백엔드? 글쎄....?" 그렇게 파이썬의 백엔드 겨울이 계속되던 중에 FastAPI가 등장했다. FastAPI는 파이썬으로 API를 빌드하기 위한 web framework이다. 공식 블로그에 안내된 fastapi의 장점 중에 현실로 와닿는 부분은 아래와 같다. - No..
서비스의 개발만큼 중요한게 API 단위 테스트이다. 테스트 tool은 네이버의 nGrinder, Apache JMeter등 다양하게 존재하지만 여기서는 명장, Apache Jmeter를 살펴본다. 필자는 얼마전까지 모든 API 테스트는 셸 스크립트로 충분하다고 생각해왔다. 아래처럼 말이다. # curl.sh curl -X GET localhost:8000/products 위와 같은 파일을 터미널에서 아래와 같이 병렬로 처리하는 등 기교부리는 것을 좋아했다. $ seq 400 | xargs -P 200 -I{} ./curl.sh 여기서는 꽤 간단하게 묘사되지만 sleep과 while, 다양한 조건까지 들어가면 꽤 그럴듯한 traffic generator tool 이 완성된다. 조금 더 헤비한 테스트가 필요..
AWS Hero와 함께하는 re:Invent reCap 온라인 세미나가 진행됐다. re:Invent도 아직 진행중인데 벌써 reCap이라니 그 속도가 대단하다. 신상 제품을 이렇게 빠르게 모국어로 접할 수 있는 것은 대단한 축복이다. Hero분들께 심심한 감사를 전한다. re:Invent 답게 세미나 내용은 신규 기능에 초점을 맞추고 있지만 대부분 경험에서 우러나는 소중한 내용을 곁들여서 공유해주셔서 한 순간도 놓치지 않기 위해서 귀를 쫑긋하고 들었다 [라고 쓰고 업무 때문에 곁눈질로 봄..] 라이선스 문제가 우려되고 더욱이 발표자를 블로그에 박제하고 싶지 않아서 캡쳐는 하지 않았다. 고로 후기는 칙칙한 텍스트로만 작성했으며 같은 이유로 발표자 실명이나 존칭은 적지 않았으니 참고. 혁신가를 위한 AWS ..
리눅스 시스템은 시리얼 포트를 통해 모니터 출력을 제공한다. 직렬 포트로 직역해서 사용하기도 하는데 대충 아래 그림과 같이 생겼다. 아마도 예전 CRT 모니터쯤에서 흔히 봤음직한 포트인데, 이 단자를 통해 리눅스 시스템의 터미널로 접근이 가능하다. putty나 SecureCRT 같이 SSH, Telnet을 지원하는 터미널 에뮬레이터에는 serial port옵션도 제공을 하니 많이들 사용하는 방법이다. 시리얼 포트는 기기에 일반적인 통신이 불가능한 상태에서 사용하게 된다. 보통 공장초기화 상태의 기기나, sshd, telnetd 같은 데몬이 정상적으로 서비스되고 있지 않아서 기기에 접속이 불가능한 경우에 사용하면 용이하겠다. 클라우드로 세상이 바뀌어가면서 시리얼 포트는 점점 잊혀갔지만 여전히 필요한 순간들..
2019년 11월 GA 된 Cloud Run에 대한 이야기를 해볼까 합니다. GCP에는 이미 서버리스에 한축을 담당하는 Cloud Functions가 GA 되었음에도 여전히 부족한 게 사실입니다. 자체적으로는 꽤 쓸만할지 모르겠으나 타사의 서버리스를 사용해본 유저라면 여러 가지로 불편한 게 사실이죠. 더욱이 앞질러가고 있는 서비스(이를테면 AWS)를 흉내 내는 듯한 모양새는 어쩔 수 없는 후발주자의 모습이었습니다. - 관련 글 : Cloud Functions, 이래서 베타다 그러던중 Cloud Next 2019에서 Cloud Run이 소개되었고 서버리스의 새로운 장을 여는 느낌이었습니다. 컨테이너 기반으로 동작하기 때문에 이식성이 좋고 기존에 도커와 같은 툴에 익숙하다면 진입장벽이 한없이 낮습니다. Cl..
! 앱피움 소개, 설치 방법을 가이드하는 글이 아닌, 조직에 도입하면서 겪은 경험을 일기처럼 써 내려간 글입니다. 글 중간중간 가볍게 적은 내용에서 인사이트를 얻으실 수 있기를 바랍니다. 앱 테스트 자동화를 알아보다 보면 엷은 물줄기가 호수로 모이듯이 결국 앱피움(appium)이라는 오픈소스 테스트 자동화 프레임워크로 귀결된다. 이번에 QA 조직에서 테스트 자동화를 도입할 수 있도록 가까운 곳에서 지원하며 익힌 내용을 두서없이 기록해본다. 이미 인터넷에는 앱피움의 소개 글이나 설치 방법들을 어렵지 않게 찾아볼 수 있는데 정작 이것으로 무엇이 가능하고, 어떻게 활용되는지에 대한 글은 부족해 보인다. 아니, 어쩌면 이미 얕게 충분히 살펴본 사람들의 글이라서 지식의 저주[1]에 빠져 내용 전달이 부실하게 느껴..
패키지를 다운로드 받아서 npm install 시켰는데 아래와 같은 오류가 발생했다. $ npm install > fsevents@1.2.11 install /Users/jybaek/work/foo/client/node_modules/fsevents > node-gyp rebuild xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer direct..
Paypal 결제를 연동할 때 복수의 상품(장바구니)을 구매하는 경우에는 다음과 같이 item_list를 사용하면 된다. 아래 소스코드는 페이팔에서 제공하는 샘플 예제이다. curl -v -X POST https://api.sandbox.paypal.com/v1/payments/payment \ -H "Content-Type: application/json" \ -H "Authorization: Bearer Access-Token" \ -d '{ "intent": "sale", "payer": { "payment_method": "paypal" }, "transactions": [ { "amount": { "total": "30.11", "currency": "USD", "details": { "subt..
개인적으로 공부한 내용을 정리하고 있는 글입니다. 글에 잘못된 부분이 있다면 인상을 쓰기보다는 제가 상처받지 않도록 부드럽고 자유롭게 의견 부탁드립니다. :-) # 마스터, 노드, 파드(pod) 개념 잡기 쿠버네티스의 가장 큰 핵심 기능은 컨테이너 오케스트레이션이다. 여러 개의 컨테이너의 상태를 확인하고 관리한다는 의미인데 트래픽의 증가 처럼 리소스가 더 필요한 상황이 되면 컨테이너를 증설(일종의 스케일-아웃 / 수평 확장)하기도 하고, 비정상 상태에 빠진 컨테이너를 종료하거나 새로운 컨테이너를 생성하는 등의 역할을 수행한다는 개념이다. 오케스트라에서 지휘자가 단원들을 지휘 하듯이 말이다. 이렇게 컨테이너를 오케스트레이션 가능하게 만드는 첫 번째 개념이 컴포넌트 집합이라고 할 수 있겠는데 바로 "마스터 ..
데이터베이스 연결 도구로 그동안 Sequel Pro를 사용해오고 있었는데 프로그램이 죽어도 너~무 잘 죽습니다. 프로그램이 툭하면 멈추고 종료되는 현상 때문에 업무 때문에 마음 조급할 때는 한없이 스트레스를 받고는 했는데요, 아무튼 Mac 스럽게 깔끔한 GUI가 마음에 들어서 버텨보려고 했으나 이제 그 한계가 찾아온 듯해서 대안으로 DBeaver라는 툴을 사용하기로 했습니다. Sequel Pro의 경우에는 MySQL 서버만 연결할 수 있고 PostgreSQL 연결을 위해서는 다른 도구를 사용해야 했습니다. 예를 들면 PSequel 같은 도구를 말이죠. Sequel Pro와 상당히 유사한 UI 때문에 적응하는데 어려움은 없지만 MySQL과 PostgreSQL 두 종류의 데이터베이스를 사용하려면 클라이언트 ..
알리바바 클라우드 포럼 2019 "광군제 기적, 클라우드의 힘" 행사에 다녀왔습니다. 최근 알리바바 클라우드에 관심이 생기면서 콘퍼런스 개최 소식을 듣고 반가운 마음에 다녀올 수 있었는데 이번 행사는 11월 11일 광군제가 끝난 직후라 관련된 이야기를 들을 수 있어서 특히 알찬 시간이었습니다. 사실 클라우드 인프라에 대해 다뤄지는 내용은 다른 퍼블릭 클라우드(Public Cloud)의 일반적인 내용과 다를 게 없지만 대규모 트래픽을 감당해낸 실제 사례가 다뤄지니 이건 재미없을 수가 없는 내용이죠. 조금 늦게 도착한 행사장에는 여느 콘퍼런스처럼 부스가 마련되어 있었고 포토존도 있었는데 조금 늦게 도착해서 서둘러 행사장으로 들어가기 바빴습니다. 이미 행사의 열기가 후끈했는데요, 안내를 받고 편한 자리에 착석..
Maven은 아파치 오픈소스 프로젝트로, 중앙에서 프로젝트의 빌드, 리포팅, 문서 등의 정보를 관리할 수 있게 도와준다. 자바나 스프링 등으로 프로젝트를 개발하게 되면 빼놓고 이야기할 수 없는 도구가 메이븐인데 MacOS에 설치하는 과정에 대해서 다뤄보도록 한다. Maven의 설치 시작은 공식 홈페이지에서 시작된다. 여기 링크를 접속하면 다운로드 받을 수 있는 파일 목록이 확인되는데 대략 아래와 같다. Maven 설치를 소개하는 많은 글에서 Other mirrors를 선택해서 속도가 빨리 나오는 사이트를 선택하라고 하지만 굳이 그럴 필요 없다. 용량 자체가 10MB 남짓이라 미러 사이트 찾아보는 시간에 클릭했다면 진작 다운로드가 완료된다. 아무튼, 아래 빨간 박스로 표시한 곳에 있는 파일을 적당히 다운로..
- Total
- Today
- Yesterday