작년 가을에 작성해뒀던 글. 묵혀두기엔 아까워서 어떤 생각으로 살았었는지 두고두고 꺼내보려고 블로그에 기재한다. 그때와 지금은 상황이 다르고, 지금과 내일도 다르겠지.. 결정적으로 본문에서 재직했던 회사는 퇴사했다... 지금 몸 담고 있는 회사로 이직한 지 일 년 남짓 시간이 흘렀다. 정확히 일 년이 되는 시점에 회고를 쓰려고 마음먹었었는데 시간이 야속할 뿐이다. 현재 나는 대부분의 사람들이 스타트업에 갖는 걱정과 두려움 모든 걸 끌어안고 가고 있다. 이번 글에서는 그런 내용을 써보고자 한다. 여기서 말하는 스타트업은 다수의 투자를 받고 성장 궤도에 올라있는 회사를 지칭하지 않는다. 중소기업보다는 벤처에 가까운 회사가 되겠다. 이건 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..

인프라가 복잡하고 특히 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..

이 글은 웨이브를 저격하거나 폄하하는 글이 아닙니다. 이번 일을 통해 스트리밍 기술을 이해하고, OTT 서비스를 하고자 한다면 보안적으로 어떤 부분을 신경 쓰면 좋은지 점검하는 글입니다. 오해 없으시길 바랍니다. 2021년 신년이 되자마자 wavve에서 대형 사고가 터졌습니다. 이전에도 유사한 문제가 있었다고 하는데 개발직군에 종사하고 있는 사람으로서 문제를 진단하고 처방하는 시간을 갖도록 하겠습니다. 포털에 "wavve 뽀로로"를 검색하면 아래와 같이 이번 사고 내용이 확인됩니다. "뽀로로 컴퓨터 왕국 대모험"이 시청되는 도중에 성인물 베드신이 송출되었다고 하네요. 어떻게 이런 일이 가능한 걸까요? 웨이브 측은 에러파일을 복구하는 과정에서 일부 오류가 있었음을 인정했다고 합니다. 한편, 1월 30일에 ..

AWS, Google Cloud Platform, Azure 등 퍼블릭 클라우드가 서비스로 흘러들면서 효율적인 인프라 관리를 위한 방법이 화두가 되었습니다. 서버 운영, 관리에 조예가 깊은 개발자라면 잘 알겠지만 애드 훅 스크립트를 통한 서버 관리는 대안이 없던 그 시절 매우 효율적인 것처럼 보였습니다. 요즘은 애드 훅 스크립트를 넘어 다양한 도구들이 쏟아지고 있는데 그 중심에 Terraform(테라폼)이 있다고 해도 과언이 아닐 겁니다. 테라폼은 대표적인 코드형 인프라(Infrastructure as Code: 이하 IaC)로 서버 프로비전 도구입니다. 이 책에서는 서버 관리를 위한 다양한 도구를 설명하고 테라폼과 비교합니다. 그리고 테라폼의 기본적인 철학과 사용법, 나아가 고도화 전략을 다룹니다. 책..

한빛미디어에서 발간된 컨테이너 보안(Container Security)이라는 책을 리뷰어로 받아보게 됐다. 시중에 도커, 컨테이너, 오케스트레이션 등으로 다양한 책이 있지만 이 책은 그중에도 특별하다. 컨테이너란 무엇인지 살펴보고 그 안에 내용을 심도 있게 다뤄나간다. 그 과정에서 보안에 취약한 부분들을 깨우칠 수 있게 돕는다. 단순히 책의 제목에 있는 "보안"이라는 키워드만 생각하고 접근하지 않아도 된다. 컨테이너를 심도 있게 파헤치고 싶다면 추천한다. 우선 이 책의 대상 독자는 다음과 같다. IT 분야의 어느 부분에 종사하던 사물의 작동 방식을 자세히 파헤치길 좋아하고 리눅스 터미널에 익숙한 사람 컨테이너에 어느 정도 익숙하고 토커나 쿠버네티스를 사용해 본 적이 있는 사람 예를 들어 "레지스트리에서 ..

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 ..

데이터베이스와 연결되는 프로그램을 개발하면서 우리는 알게 모르게 데이터 모델링을 다루고 있다. 특히 구조화가 잘 되어 있는 데이터베이스의 ERD(Entity Relationship Diagram)를 들여다 본적이 있다면 데이터 모델링에 조금은 가까워져있으리라. Blog2Book 에서 나온 프로젝트 성패를 결정짓는 데이터 모델링 이야기 덕분에 추상적으로만 알고 있던 개념을 글로 잘 정리 해볼 수 있었다. Blog2Book은 등장인물을 만들고 대화를 통해 프로젝트를 배워가는 구조로 책을 구성한다. 신입사원이나 새로운 기술을 배우는 친구(나한빛처럼)가 등장하고 가이드 해주는 시니어(정수석)을 등장시킨다. 둘의 대화를 통해 기술을 배워나가는게 특징이다. 책의 내용은 주로 RDB(Relational Databas..

원더키디에서 그려지는 일상이 펼쳐질 거라고 기대했던 2020년이 끝나간다. 유독 힘든 일이 많았던 한 해였지만 비단 나만 그렇게 느끼지는 않았을 거다. 올해 나에게 무슨 일이 있었는지 정리하고 2021년을 맞이하도록 하자. (회사 이야기는 2019년 회고와 이어진다) # 총체적 난국인 앱을 론칭 속한 조직에서 연초에 약 4개월간 준비한 이커머스 플랫폼(네이티브 앱)을 론칭했다. 하지만 한 달 만에 셧다운. 문제는 1) 제대로 준비되지 않은 상태로 급하게 론칭하는 바람에 온갖 버그를 품고 있었고 2) 디자이너의 부재로 클라이언트 앱 개발자의 주도적인 앱 디자인으로 앱의 퀄리티를 확보하지 못했다. 3) 운영팀은 앱의 론칭 사실조차 인지하지 못했다. 훗날 회고할 때는 정식 론칭인지 몰랐다고…. (그럼 베타 론..

요즘 계속 한빛미디어를 통해 지원받는 책만 읽다가 #내돈내산 책을 리뷰하게 됐다. 2020년 크리스마스와 연말에 어떤 책을 읽을까 고민하던 차에 선택한 책은 클린 코드. 미리 결론을 말하자면 괜히 개발자 필수 서적이 아니라는 것을 느꼈다. (스포하자면 클린 아키텍처를 세트로 구매했고 다음 리뷰 대상이다) 2013년 초판 발행 이후 2020년 7월 31일 7쇄가 발행됐고 그 과정에서 표지에도 변화가 있었다. 무엇 때문에 이 책이 개발자 필수 도서일까? 이 책에서 다루는 내용과 비슷한 책은 많다. 그런데도 이 책이 주목 받는 데는 이유가 있다. 일단 명료하게 내용이 전달된다. 일부에는 저자 개인의 생각을 분명히 밝히고 들어간다. 다만, 아래 내용에 해당하는 사람에게는 이 책을 권하지 않는다. - 자바를 다뤄..
시중에는 리더와 관련된 서적을 어렵지 않게 찾을 수 있다. 요즘은 인터넷에서도 리더와 관련된 글이 쏟아진다. 하지만 조직의 고유한 특성과 상황에 따라 다양한 케이스가 존재하기 때문에 "좋은 리더"를 정의하는 것은 쉽지 않다. 이번 글에서는 오롯이 내 경험을 토대로 좋은 리더란 무엇인지에 대해 정의해보고자 한다. # 왜 갑자기 좋은 리더에 대해 생각하게 되었나? 어느 날 생각지도 못한 곳에서 "재연 님, 좋은 리더란 무엇일까요?" 하는 질문을 받았다. 평소 생각으로는 내가 그동안 겪어온 리더를 바탕으로 대답을 했겠지만, 그날따라 유독 정확히 대답하지 못했다. 구성원들이 성장할 수 있는 발판을 마련해주는 것. 그것이 좋은 리더라고 말끝을 흐리고 말았다. 더 깊이는 생각을 못 해봤다. 무엇이 구성원을 위한 성..

이번에 한빛미디어 "나는 리뷰어다"를 통해 받게 된 책은 처음 배우는 스위프트 이다. 마침 현재 재직중인 회사에서 스위프트를 통해 iOS 네이티브 앱을 유지보수 할 일이 있었는데 이 책을 받고 환호했던 날이 기억이 난다. 본인은 백엔드와 인프라 아키텍처를 설계하는 사람이지만, 작은 스타트업에 재직하다보니 때로는 프런트엔드를 하기도 하고,.. 요즘은 iOS 개발자의 퇴사로 인해 소소한 유지보수는 직접 하고 있던터였다. 아무튼, 여러 영역에 거쳐 개발을 해오다보니 감이 있어서 xcode( iOS 개발 툴, intellij 같은 IDE)를 열고 적당히 화면에 보이는 영역의 소스코드를 찾아서 수정하는 건 어렵지 않다. 하지만 새로 뭔가를 개발하기 위해서는 iOS 사용되는 개발 패턴을 알아야 하고 UI 와 유기적..
- Total
- Today
- Yesterday