
객체지향 언어로 소프트웨어를 개발하면서 필수로 알아야 하는 디자인 패턴을 정리해놓은 책이 이번에 개정판으로 돌아왔다. 바로 "헤드퍼스트 디자인 패턴"이 그 주인공이다. 이 책은 우리의 좌뇌와 우뇌가 골고루 일 할 수 있도록 알차게 구성되어 있다. 독자가 책을 더 깊이 있게 이해하고 흥미롭게 읽을 수 있도록 글과 그림을 적절히 섞어뒀다. 아마 오랫동안 머릿속에 기억될 듯한데 하나씩 살펴보도록 하자. 호기심을 한껏 당겨주는 도입부가 인상적이다. 헤드퍼스트에서 발간되는 모든 책에 들어가는 내용인지는 모른다. 헤드퍼스트 책은 처음이라. 많은 페이지에 적절하게 그림이 들어가 있다. 지금까지 이런 책은 처음이다. 독자가 진심으로 공부할 수 있도록 두뇌를 정복하는 방법까지 지면으로 설명하고 있다. 이 정도면 패턴 가..

pycharm, datagrip을 최신 버전으로 업데이트했을 때 메뉴가 전부 현지화(한글) 되어 버렸다. 아마 IntelliJ를 포함해서 JetBrains에서 나오는 모든 프로그램이 동일하지 않을까 하는 예상된다. 자, 그럼 메뉴를 영어로 되돌리고 싶으신 분들은 최신 버전으로 업데이트될 때 자동으로 설치된 "Korean Language Pack / 한국어 언어 팩" 플러그인을 제거해주면 되겠다. 딱히 영어가 능숙한 건 아니지만 이미 눈에 익어버려서 한글 메뉴는 매우 불편하게 느껴졌다. 왜 이런 업데이트를 감행했을까? 아무튼, 메뉴 위치는 Preferences -> Plugins에서 찾을 수 있다. 영어로 변경하고 나서 다시 마음이 편-안 해졌다. :) 그러고 보니 파이참은 한 2년 만에 업데이트한 건가...

아키텍트 지망생을 위한 기본서가 한빛미디어에서 발간되었다. 바로 Fundamentals of Software Architecture, 소프트웨어 아키텍처 101 되시겠다. 총 세 개의 파트로 구성되어 있고 대략적인 흐름은 다음과 같다. 소프트웨어 아키텍처란 무엇인지 살펴보고 역사적인 트렌드를 알아본다. 아키텍처적인 사고와 모듈성에 대해 언급하며 응집 / 커플링 / 커네이선스처럼 아키텍처를 설계할 때 고려해야 하는 것을 설명한다. 요즘 아키텍처 관련된 책이나 글을 찾아보면 한 번씩은 모두 언급되는 용어들인데 이 책에 가득 정리되어 있다고 보면 된다. 아키텍처 스타일 파트에선 다양한 아키텍처 스타일을 다룬다. 레이어드 아키텍처 스타일(2 티어, 3 티어 아키텍처를 생각하면 된다), 파이프라인 아키텍처 스타일..

코로나가 시작되고 2년 가까이 가족끼리 외식 한번 한 적이 없다. 술자리는 물론 지인들과 얼굴을 못 본 지 2년이 지났다. 매년 스승에 날에 찾아뵙던 은사님도 만나지 못했다. 아이는 그 흔한 키즈카페 한번 가지를 않았고 집에만 머물렀다. 학부모가 원하면 가정학습이 가능하던 2020년에는 유치원도 보내지 않은 날이 더 많다. 외출 후에 집으로 돌아오면 손을 씻고 알코올 솜으로 핸드폰부터 닦았다. 백신의 경우 본인은 3차까지, 아내는 2차까지 완료했다. 이렇게 2년을 보냈는데 아내가 열이 나기 시작했다. 자가검사키트(신속항원검사)로 검사해보니 음성이다. 감기일까? 혹시 모르니 마스크를 쓰고 밤을 보냈다. 다음날 아침 다시 자가검사키트로 검사했는데 희미하게 두 줄이 보인다. 아내는 그 즉시 선별 진료소로 외출..

in Action 시리즈의 하나로 그래프QL 인 액션이 한빛미디어에서 번역서로 출간되었습니다. in Action 시리즈답게 그래프QL이란 무엇인지 개념을 먼저 설명하고 기존 REST API와의 차이점을 잘 서술하고 있습니다. 또한 보안, 캐시와 최적화, 학습 곡선이라는 소제목으로 문제점도 빼지 않고 다룹니다. 총 3개의 파트, 10 챕터로 구성이 되어 있는데 목차를 살펴보면 다음과 같습니다. 아마 글을 읽으시는 분은 목차를 보고 대충 어떤 흐름으로 내용이 전개될지 가늠하실 수 있을 거예요. # PART 1. 그래프QL 경험해보기 그래프QL 소개 그래프QL API 그래프QL 작업 수정 및 구성 # PART 2. 그래프QL API 작성법 그래프QL 스키마 설계 스키마 리졸버 구현 데이터베이스 모델과 관계 사..

한빛미디어에서 발간되는 혼공 시리즈에 R이 추가됐다! 이 시리즈는 개발 언어를 잘 모르는 사람을 대상으로 하기 때문에 진입 장벽이 낮다. 혼자 공부하는 R 데이터 분석은 우연한 기회로 베타 리딩에 참여한 책이다. "혼자 공부하는"이라는 제목에서 느껴지듯이 대상 독자에 제한이 없다. R이라는 언어나 프로그래밍 지식이 없어도 상관없다. 변수, 함수, 벡터, 행렬 등 아주 기본적인 개념부터 짚어나가기 때문에 혼자 공부하는데 무리가 없다. 데이터 분석을 위한 프로그래밍 언어로는 R 외에도 파이썬도 많이 사용되지만 선택은 사용자의 몫이다. 파이썬은 대중화되어 있기 때문에 이미 파이썬을 다뤄본 사람이라면 데이터 분석도 파이썬으로 하는 게 편할지 모르겠다. 한편 R의 경우는 파이썬에 비해 강력한 시각화를 자랑한다. ..

한빛미디어에서 번역서로 발간된 개발자에서 아키텍트로. 작년 연말에 사놓고 먼지만 쌓이고 있었는데 드디어 완독 했다. 책 표지는 아주 흥미롭지만 내용은 살짝 지루하다. 주된 내용은 아키텍처를 설계할 때 고려해야 하는 것들과 관련 문서는 어떤 방법론으로 작성하게 되는지, 이해관계자와 무슨 데이터(아키텍처)를 두고 이야기 나누면 되는지 등 여러 가지를 포괄하고 있다. 완독하고 나서 보니 책의 구성은 소프트웨어 스펙의 모든 것과 같은 느낌을 준다. 개발자, 혹은 아키텍트를 준비하는 사람들에게 단비 같은 책이라고 말할 수는 없다. 이 책을 추천하느냐고 묻는다면 나는 글쎄. 이 책을 통해 무언가 대단한 깨달음을 얻기를 기대한다면 권하지 않는다. 내 경우에 "아키텍트"라는 단어가 주는 느낌은 소프트웨어 아키텍처, 혹..

과거 회고를 훑어보니 과거의 나와 대화하는 형식으로 보는 것도 재미있겠더라. 그래서 이번에는 나 스스로를 인터뷰하는 방식으로 진행해보면 어떨까 하는 생각이 들었다. 미래의 내게 재미있는 선물이 되지 않을까? 그럼 바로 시작 :) # 2020년 회고에서 생각했던 목표대로 살았나? 2020년이 끝날 때 2021년에는 엔지니어링 파워를 끌어올리는데 집중하겠다고 다짐했는데 나름 잘 지켜졌다. 여러 가지 기술을 다뤘고 많은 코드를 찍어냈다. 하지만 이 과정에서 내가 갖고 있는 에너지를 무작정 소모하는 게 아니라 조절을 잘해야겠다는 생각을 하게 됐다. 에너지는 유한한 자원이니까. 예를 들어, 가지고 있는 열정에 80%를 업무에 투자하고 나머지는 자기 계발에 힘쓴다던지, 책을 보거나 알고리즘 공부를 하는 등. 여유가..

한빛미디어에서 발간된 데이터 스토리는 구성이 굉장히 재미있다. 짤막짤막하게 데이터 관련된 이야기를 풀어내고 있고 여러 가지 상황에서 제안서나 보고, 발표에 쓰이는 다양한 기법이 잘 풀어져서 스토리를 이루고 있다. 책 제목이 내용과 제법 잘 어울린다. 각 챕터가 짧게 구성되어 있기 때문에 빠르게 읽을 수 있고 중간에 잠시 책을 덮어 두더라도 전혀 부담이 없다. 챕터 구분도 깔끔해서 언제든 필요한 부분을 되짚어볼 수 있다. 책 읽는 속도가 느린 편인 본인도 2-3시간 만에 전체를 빠르게 완독 할 수 있었다. 그리고 적절한 위치에 등장하는 차트, 다이어그램은 읽는 재미를 더 해준다. 발표를 위한 장표를 만들 때 보통은 글자를 최대한 빼고 숫자, 그림을 많이 보여 주는 게 좋은 발표라고 이야기를 한다. 장표에 ..

아이가 태어나고 바다를 한 번도 보여준 적이 없었다. 멀미가 심해서 어디 데려가려면 퍽 고생을 해야 했기 때문인데 이번에 큰 마음먹고 근교의 바다로 가기로 결정. 당연히 철썩철썩 파도를 보여주고 싶은 마음에 바다를 검색했다. 그리고 펜션 예약까지 완료. 그런데 여행 가기 전날에 우리의 목적지인 방아머리를 검색해보니 "도착했을 때는 갯벌이었어요"라는 블로그 글이 떡하니 나왔다. 순간 아차 싶었는데 우리가 도착하는 시간이 만조인지 간조인지 확인할 필요가 있었던 것. 만조(滿潮)란 가득찰 만, 조수 조. 바닷물이 가득 찼다는 뜻이다. 바로 내가 원했던 일반적인 사람들이 생각하는 바다의 모양이다. 한편 간조(干潮)는 마를 간에 조수 조. 바닷물이 말랐다는 뜻이겠다. 지구의 자전 12시간과 달의 공전 24시간이 ..

이번 글에서는 한국에서 개발하고 서비스하고 있는 OTT(over-the-top media service: 미디어 콘텐츠를 제공하는 서비스)의 아쉬운 점을 넷플릭스와 비교해서 알아보도록 한다. OTT 선택지는 2021년 현재 정말 많아졌다. 군웅할거(群雄割據)라고 하기에는 사용자가 한 개의 서비스만 이용하지는 않는다. 마치 소셜 커머스를 여러 개 이용하는 것처럼 말이다. 자, 그럼 사용자의 선택지는 넷플릭스를 필두로 마블 코믹스를 끼고 있는 디즈니 플러스, 그리고 국내에는 왓챠, 웨이브, 티빙, 쿠팡 플레이 등. 이 외에도 정말 많다. 아마 OTT를 결제해서 보는 사람은 최소 두 개 이상의 서비스를 이용하고 있을 거다. 굳이 여러 개를 결제해서 보는 이유는 서로 제공하는 콘텐츠에 차이가 있기 때문이겠다. ..
컨테이너를 생성할 때 제한은 아래와 같이 해줍니다. 메모리는 b, k, m, g로 설정할 수 있습니다. 여기서 적용되는 메모리 제한은 hard limit입니다. 해당 메모리를 초과해서 사용하려고 하면 OOM(out of memory)이 발생됩니다. $ docker run -d -it --name local-python --memory=1g python:3.8-slim /bin/bash 한편, memory를 따로 설정하지 않으면 0으로 적용됩니다. 즉, 호스트의 메모리 전체를 공유해서 사용하게 됩니다. 잘 적용되었는지는 inspect 옵션을 통해 확인할 수 있습니다. $ docker inspect local-python | grep Memory "Memory": 1073741824, "KernelMemor..

소프트웨어 스펙의 모든 것은 SRS(Software Requirements Specification)이라고 하는 문서를 아주 심도있게 다룬다. SRS란 무엇인지, 왜 작성해야 하는지, 어떻게 작성하면 되는지 등 여러 예제를 통해 보여준다. 또한 성공한 프로젝트와 실패한 프로젝트에서 소프트웨어 스펙이 어떤 영향을 주었는지는 아주 흥미롭다. 아마 기획문서, 설계문서, 아키텍처, 메뉴얼 등 여러가지 이름으로 어쩌면 개발자 주변에 항상 있었을지 모른다. 하지만 SRS는 이것들과 분명히 다르고 별개의 문서로 취급되어야 한다. 책의 서미에 용어에 대한 정리를 보여준다. MDR(Market Requirements Document), MRS(Market Requirements Specification), PRD(Pro..
한 개의 터미널에서 여러 화면을 사용해야 할 때 screen은 매우 유용합니다. 백그라운드로 돌려야 하는 작업도 " > /dev/null 2>&1 " 같은 꼬리표보다 가끔은 screen이 편할 때도 있죠. 이번 글에서는 screen을 빠르게 사용하기 위한 기본 커맨드를 알아봅니다. # screen 실행 screen -S sockname screen은 이름을 갖습니다. 이름으로 구분해서 스크린을 사용할 수 있죠. 보통 여러 개의 스크린을 운영할 일은 드물기 때문에 적당히 본인만의 이름을 사용해도 크게 무리는 없습니다. 여기서는 sockname을 이름으로 사용했습니다. # screen 빠져나오기 Ctrl + a + d 스크린을 빠져나올 때는 위의 커맨드를 순서대로 눌러주면 됩니다. 마치 영어를 AD를 입력할..

클러스터를 생성할 때 함께 만든 슈퍼계정 이름을 변경하는 방법을 기술합니다. 우선, 계정 이름을 변경하는 쿼리는 다음과 같고 슈퍼계정 권한이 있어야만 실행할 수 있습니다. ( 기존 계정 이름이 admin이고 이를 sysadmin으로 변경하겠다는 예제입니다 ) alter user admin rename to sysadmin; 하지만 위에 쿼리를 실행하면 아래와 같은 에러를 만나게 됩니다. 현재 접속한 계정의 이름을 변경할 수 없다는 내용입니다. 이 상태에서 우리가 선택할 수 있는 방법은 1) 임시 계정(tempadmin)을 추가로 2) 임시 계정에 슈퍼계정 권한을 줍니다 3) 임시 계정으로 접속해서 기존 계정(admin)의 이름을 변경해줍니다 4) 그리고 다시 변경된 이름(sysadmin)으로 접속해서 임..

한빛미디어에서 이번에 번역서로 발간된 Kubernetes Best Practices 쿠버네티스 모범 사례이다. 책의 제목보다 부제가 무척 매력적이기 때문에 엔지니어라면 이 책을 포기하기 쉽지 않다 쿠버네티스 창시자가 알려주는 최신 쿠버네티스 개발 및 배포 기법 이건 못참지. 요즘 IT 개발 쪽 콘퍼런스에 가보면 빠지지 않고 등장하는 주제가 쿠버네티스다. 그만큼 핫한 기술이기도 하고 많은 회사들이 인프라 아키텍처 고도화의 방향을 MSA로 잡으면서 쿠버네티스를 시도한다. 아무튼, 이 책은 쿠버네티스 오픈 소스 프로젝트의 공동 설립자 브렌던 번스(Brendan Burns)와 동료들이 작성한 책이다. 아마도 많은 분들이 빠르게 쿠버네티스를 익히기 위해 이 책을 검색하고 꺼내 들었을 거라고 생각된다. 하지만 잠깐..

한빛미디어에서 2017년에 발간된 마이크로서비스 아키텍처 구축이다. 아마도 마이크로서비스 관련해서 관심 있는 사람이라면 한 번쯤은 들어봤을 법한 책이고, 커뮤니티에서도 많은 호평을 받았다. 현재(2021-10-10) 기준으로 생각해보면 이미 꽤 오래된 책이다. IT 기술은 매우 빠르게 발전하기 때문에 전공 서적의 인기가 보통 오래가지 못한다. 눈 감았다가 뜨면 새로운 기술이 튀어나오고, 언어나 플랫폼의 경우 버전 업그레이드 속도를 책이 따라가지 못하기 때문이다. 하지만 이 책은 다르다. 무려 4년이 지났음에도 마이크로서비스를 다루는 책 중에서도 바이블로 불린다. 한빛미디어 리뷰어 활동을 하면서 다른 마이크로서비스 책도 여럿 리뷰 했지만 결국 대부분의 개념이 겹친다. 뭐랄까, 앞으로 나오게 될 마이크로서비..

작은 프로젝트를 진행할 때도 메시지 브로커는 아키텍처에 따라 필요한 경우가 종종 있습니다. 이때 Apache kafka를 쓰자니 배보다 배꼽이 커지고, 클라우드의 메시지 큐(AWS SQS 등)를 사용하자니 벤더 락인(vendor lock-in)이 우려될 때 Redis stream은 아주 좋은 대안이 됩니다. 혹시 kafka를 redis pub/sub과 비교하려 한다면 정확한 비교가 안되는데 토픽 개념은 유사하지만 redis pub/sub에는 소비자 그룹의 개념이 없기 때문입니다. ( stream에서 xread의 경우에는 소비자 그룹을 사용하지 않습니다. xgroupread로 접근하는게 맞습니다. 소비자 그룹의 개념이 들어가면서 메시지가 잘 도착했는지 확인이 가능합니다. 혹시 메시지 전달의 성공/실패/처리..

macOS에서 docker를 사용하기 위해 그간 Docker Desktop을 사용해왔었는데 유료화 소식이 전해져 왔다. Docker Desktop은 개인은 무료, 기업은 직원이 250명 이상이거나 연매출이 대략 110억($10 million) 이상인 경우 유료 버전을 사용해야 한다 (아직 유예기간 있음). https://www.docker.com/blog/updating-product-subscriptions/ Docker is Updating and Extending Our Product Subscriptions - Docker Blog Learn from Docker experts to simplify and advance your app development and management with Do..

한빛미디어에서 아주 재밌는 책이 발간되었다. Microservices Up & Runing 처음 시작하는 마이크로서비스인데 마이크로서비스 초심자를 위해 정말 많은 것을 가득 차린 준비된 밥상 느낌이다. 마이크로서비스 개론부터 쿠버네티스, 헬름, 깃옵스 배포 도구로 Argo CD, 그리고 Infrastructure as Code(IaC) 도구인 테라폼까지. 단숨에 훌훌 넘어간다. 소프트웨어 구축의 결정을 기록하는 아키텍처 결정 기록(Architecture Decision Record:ADR) 작성을 시작으로 마이크로서비스 팀 설계, 팀 토폴로지를 만들기까지 아주 자세하게 다룬다. 또한 마이크로서비스를 구축, 운영하는 데 있어서 아주 중요한 핵심 요소가 책 구석구석에 드러나 있다. 마이크로서비스 소유권 - ..
- Total
- Today
- Yesterday