[지은이 소개]
김준영
학창시절 제2의 봉준호 같은 유명한 영화감독이 되고 싶었지만 스스로에 대한 확신이 없어서 성균관대 컴퓨터공학과에 입학했다. 대학 시절 삼성전자 소프트웨어 맴버십과 병역특례, 대학 서버실 관리를 하면서 컴퓨터 프로그래밍의 매력에 푹 빠졌다. 삼성전자에서 타이젠(Tizen) 운영체제를 개발했고 현재는 SK텔레콤에서 데이터 분석 업무를 담당하고 있다. 2014년도에 컴퓨터시스템응용 기술사 자격증을 취득했다.
정상운
개발자로서 첫발을 내딛은 회사에서 일하다 엘라스틱 스택 기술에 흠뻑 빠져들었다. 이후 열성적으로 키바나와 로그스태시 플러그인에 컨트리뷰션하고 엘라스티콘(Elastic{ON}) 서울에서 발표도 하며 여러 대외 활동을 이어가다가 결국 전업으로 삼게 됐다. 지금은 엘라스틱 스택의 개발사인 엘라스틱에서 서포트 엔지니어로 일하며 인간 디버거 역할을 수행하고 있다.
[지은이의 말]
2008년 회사에서 깃(Git)을 처음 도입했던 시절이 기억난다. 리눅스 개발팀이었던 우리 부서는 기존에 사용하던 유료 형상관리 툴 대신 리누스 토발즈(리눅스 창시자)가 만들었다는 새로운 형상관리 툴인 깃을 도입하기로 결정했다. 하지만 당시 깃은 초창기 버전이라 사용자 편의 기능이 거의 없었고, 모두들 사용법에 익숙하지 않아 사용하기 버거워 했다. 제품 릴리스가 코앞인데 개발자끼리 커밋이 얽히기라도 하면 밤을 새워서 깃 히스토리를 정리해야 했다. 지금 생각해 보면 원격 저장소, 스테이징 에어리어 같은 깃의 기본 개념들을 이해하지 않고 튜토리얼에서 제공하는 사용법 정도만 익혀서 바로 실전에 적용한 것이 문제였던 듯하다. 도구를 제대로 사용하는 것도 힘들었고 문제가 발생했을 때 해결하기도 힘겨웠다.
그 이후로도 많은 프레임워크, 라이브러리, 프로그램등을 사용했지만 항상 가슴속에 답답함이 있었다. 영어로 적힌 개발 문서를 보는 어려움도 있고 코드 작성 이외의 시간을 낭비라고 생각했던 문화도 있었다. 프레임워크를 온전히 이해하지 못하고 주먹구구식으로 사용하다보니 기능을 100% 활용하지 못하는 것 같았다. 간혹 문제가 발생하거나 코드 작성이 힘들면 구글과 스택오버플로우의 도움을 받았다. 인터넷에서 발견한 코드들과 누군가의 질문에 친절하게 답변해주는 답변자들에 대한 감사함을 느꼈지만, 동시에 ‘왜 나는 코드 작성이 힘들었을까?’, ‘왜 나는 응용을 하지 못했을까?’ 하는 스스로에 대한 실망이 공존했다. 당연한 이야기지만 기초 지식이 없기 때문에 이해력이나 응용력이 좋을 수가 없었다.
이번에 책을 쓰면서 가장 중점을 둔 포인트가 바로 이 지점이었다. 이 책을 통해 독자들에게 엘라스틱 스택이라는 프레임워크의 기초와 기본을 알려주고 싶었다. 독자들이 적어도 자신이 사용하는 프레임워크의 기초 지식을 습득하고 코드를 작성했으면 하는 바람이 있었다. 중요한 부분은 여러 번 반복해서 완전히 이해하게 설명했고, 지면의 한계로 덜 중요한 부분은 과감히 생략했다. 혹시나 설명이 부족한 부분들은 온라인 문서 링크를 남겨뒀다. 이 책의 설명은 대부분 공식 문서나 엘라스틱 블로그에도 있는 내용이지만 인터넷에서 조각조각 배워 나가는 것보다 독자들이 이 책을 통해 먼저 큰 그림을 이해하면 더할 나위 없겠다. 프레임워크의 기초나 뼈대를 이해하면 한번 검색을 해도 더 스마트하게 검색하고 누군가의 코드와 설명, 혹은 질문과 답변들을 더 쉽게 이해하고 오래 기억할 수 있기 때문이다.
또한, 책을 쓰면서 신경을 쓴 또 다른 포인트는 기존 엘라스틱 책들과의 차별성이다. 처음 책을 기획할 때에는 시중에 전혀 없었던 엘라스틱 스택 활용서를 쓰려고 했다. 하지만 기본을 더 중시하자는 출판사의 의견에 따라서 엘라스틱 스택 설명과 활용, 그리고 운영 전반에 관한 책으로 변경했다. 대신 엘라스틱서치만을 깊게 다루는 기존 책들과 다르게 차별점을 두어, 엘라스틱서치 분량을 줄이고 로그스태시, 비트, 키바나 등 전반적인 엘라스틱 스택 분량을 늘렸다. 그리고 모든 것을 설명할 수 없다면 지엽적인 것들은 버리고, 대신 기초가 되는 부분들을 더 강조하고 활용 사례까지 보여주는 것으로 변경했다.
마지막으로, 엘라스틱을 만든 샤이 배넌과 엘라스틱을 발전시킨 수많은 참여자들, 그리고 더 깊이 뿌리를 파고 내려가면 루씬을 만들고 분산 시스템을 만들고 그 밖에 지금의 컴퓨터 환경을 만들기 위해 노력했던 수많은 개발자들에게 감사를 보낸다.
- 김준영
로그 모니터링 시스템을 구축하기 위해 엘라스틱 스택(당시에는 ELK 스택이라고 불리웠다)을 처음 접했을 때를 돌이켜보면 다소 혼란과 혼동의 연속이었다. 그때 엘라스틱서치라고 하면, 인덱싱을 통해 빠른 전문(Full-text) 검색을 수행할 수 있는 도구라거나, 관계형 데이터베이스에 신뢰할 수 있는 데이터를 보관하고 부가적으로 색인을 도와주는 정도라고 이해했다. 하지만 조금 더 파보니 원본 데이터를 저장할 수도 있고 레플리카 구성을 통해 신뢰도도 높일 수 있다는 사실을 알게 됐으며, 데이터베이스처럼 활용할 수도 있겠다는 생각을 했다. 빠른 검색 및 집계 성능은 당시 개발하던 모니터링 솔루션의 성능 문제를 획기적으로 해결해 줄 수 있으리라 여겨졌으며, 직접 로그스태시와 키바나를 사용해보고 난 뒤에는 내가 다른 기술로 직접 구현하는 것보다는 차라리 엘라스틱 스택을 더 잘 활용하는 편이 낫겠다는 생각이 들었다. 실제로 간단하게 구축했던 엘라스틱 스택이 기존에 상상하지 못하던 수준의 로그를 가뿐하게 처리하는 모습을 보고서는, 바야흐로 엘라스틱 스택의 시대가 왔음을 직감했다.
데이터 플랫폼을 구축하기 위해선 데이터의 수집, 정제, 보관, 검색, 시각화 등 다양한 기능을 구현해야 할 뿐 아니라 성능, 유연성 등을 고려해 여러 소프트웨어들을 조사하고 한데 묶어낼 필요가 있다. 이제는 잘 알려진 기술 중 하나인 엘라스틱 스택은 이 모든 요소를 포함함은 물론, 손쉬운 배포, 편리한 사용성, 확장성, 뛰어난 성능, 높은 내결함성 및 고가용성을 자랑해 그 자체만으로도 완전한 데이터 플랫폼을 구성할 수 있는, 그야말로 전천후 소프트웨어 스택의 위상에 올랐다.
하지만 많은 특징을 내포하고 있고 배포도 쉬운 만큼, 좀 더 제대로 사용하기 위해선 데이터 플랫폼 전반, 클러스터링, 분산 처리, 인덱싱 등 많은 기반 지식이 필요하다. 깊은 이해 없이 사용하다가 어느 순간 성능이나 보안 등 운영 측면에서 뜻밖의 문제에 맞닥뜨리기도 한다. 뿐만 아니라 엘라스틱 스택의 장점이자 단점인 빠른 업데이트와 그에 따른 추가 기능들은 사용자로 하여금 어떤 기능을 어디서부터 활용하면 좋을지 헷갈리게 만들기도 한다.
나는 이 책에 엘라스틱 스택의 구조와 동작 원리에 대해 오해 없이 정확한 정보를 담고자 노력했다. 방대한 엘라스틱 스택의 기능을 모두 담지는 못하더라도 가장 핵심적인 내용들을 추려 독자들로 하여금 엘라스틱 스택의 기능을 좀 더 다양하게 체험할 수 있게 하고 싶었다. 나아가 고성능 검색엔진 엘라스틱서치와 그를 서포트하는 주변 소프트웨어가 아니라, 스택으로서 각각의 역할을 완벽하게 소화하는 스택 내 제품들의 매력을 알려주고 싶었다.
엘라스틱 스택은 국내 커뮤니티도 잘 활성화되어 있을 뿐만 아니라 우리나라 사용자들의 오픈소스 기여도 많이 이뤄지고 있다. 이 책을 통해 엘라스틱의 매력이 충분히 전달되길 바라며, 나아가 엘라스틱 커뮤니티와 오픈소스의 기여자가 늘어났으면 하는 바람이다.
- 정상운
[감수자 소개]
박재호
포항공과대학교 컴퓨터공학과 학부와 대학원을 졸업했다. 임베디드 시스템 개발, 기업용 백업 소프트웨어 개발, 방송국 콘텐츠 수신제한 시스템 개발과 운영 지원, 클라우드에서 동작하는 서비스 개발에 이르기까지 다양한 실무 경험을 토대로 고성능 고가용성 시스템을 설계하고 있다. 코스닥 상장사인 엑셈 CTO로 인공지능과 스마트팩토리 관련 개발을 총괄했으며, 클라우드용 모니터링 시스템을 위한 아키텍처 설계도 주도했다. 『마이크로서비스 도입, 이렇게 한다』(책만, 2021), 『Clean Code 클린 코드』(인사이트, 2013)와 『피플웨어』(인사이트, 2014)를 비롯해 번역하고 집필한 책이 40여 권에 이른다.
각종 기술 소식을 다루는 블로그 ‘컴퓨터 vs 책’(https://jhrogue.blogspot.com/)과 개발자를 위한 유튜브 '채널 박재호'(https://www.youtube.com/c/박재호dev)를 운영하며, 개발자들을 위한 각종 교육과 세미나도 지속적으로 진행하고 있다.
[감수의 글]
감수를 위해 이 책 초고부터 교정지까지 본문을 여러 차례 반복해서 읽게 되었는데 그때마다 엘라스틱 스택의 각기 다른 핵심 기능과 활용법이 눈에 쏙쏙 들어오는 신기한 경험을 했다. 보통 기술서를 여러 번 읽으면 약간은 지루하다는 생각이 들기 마련인데 이 책은 읽을 때마다 뭔가 중요한 내용을 배우고 있다는 느낌을 받았다. 엘라스틱을 한 번도 접한 적이 없는 개발자뿐만 아니라 어느 정도 엘라스틱에 익숙하다고 생각하는 개발자도 이 책을 손에 들면 감수자의 말에 공감하게 될 것이다.
이 책에서는 모든 것을 포괄적으로 설명하기 위해 중요한 내용과 그렇지 않은 내용을 전반에 여기저기 흩트려 놓는 대신, 철저하게 파레토 법칙에 따라 80% 효과를 얻을 수 있는 20%에 집중한다. 따라서 본문 전개 과정에서 속도감과 응집력이 상당히 높다. 또한 카탈로그에 나온 API나 기능 설명에 그치지 않고 핵심을 빠르게 학습하기 위한 좋은 예제가 설명 뒤에 바로 이어지며, 책 전반에 걸쳐 추상적인 이론을 손에 잡히는 구체적인 사례로 바꿔낸다. 엘라스틱 스택을 언제 어디서 어떻게 잘 활용할 수 있는지 고민하면서 인터넷에 올라온 단편적인 지식을 수집하다 지친 분들이라면 이 책이 갈증을 해소해주는 오아시스처럼 보일 것이다.
본문에도 나오지만 엘라스틱 스택은 설치부터 실제 활용까지 그 사용법이 크게 어렵지 않기 때문에 그냥 곧바로 써봐도 될 것 같다는 생각이 들 수도 있다. 하지만 입문하기 쉽다고 해서 마스터하기도 쉽다고 보기는 어렵다. 엘라스틱 스택은 빅데이터 파이프라인 전체를 구축할 수 있는 강력한 기능을 제공하기 때문에 실제 알아야 할 내용이 매우 많으므로, 사용하면서 배우고, 배우면서 사용하는 능동적인 학습이 필수다. 능동적인 학습 과정에서 큰 도움을 주는 이 책의 주요 특성 중 하나는 목적지향적인 설명이다. 앞뒤 맥락 없이 무조건적으로 이런저런 기능이 있다고 설명하는 대신, 이런저런 일을 하려면 엘라스틱의 어떤 기능을 활용해야 할지를 잘 설명한다. 예를 들어, 유사한 기능이 두 가지 있을 때 정확한 차이점과 구체적인 사용법을 알아야 기능이나 비기능(성능과 저장 공간 절약) 측면에서 원하는 목적을 달성할 수 있는데, 이 책에서는 각각에 대해 의도와 핵심을 설명하고 비교를 통해 상황에 맞는 선택지를 제시한다. 또한 개발 과정을 벗어나 실제 운영 과정에서 고려해야 하는 (정말 양보하기 어려운 필수) 사안에 대해서도 풍부한 그림과 시나리오를 활용해 내부 동작 방식까지 파고들면서 그렇게 해야 하는 이유와 구체적인 지침을 명확하게 정리해준다.
이 책에서 숨겨진 주인공은 바로 엘라스틱 스택 활용 부문에 나오는 프로젝트 삼총사다. 빅데이터 관련 프로젝트를 진행할 때 여러 가지 오픈 소스를 활용해 복잡하게 연결하는 대신 엘라스틱 스택만으로 데이터 수집부터 시각화까지 한 번에 끝내는 비법이 궁금했을텐데, 이 책에서는 예제를 위한 예제가 아닌 캐글/트위터/공공데이터에서 가져온 실제 데이터를 토대로 한국어까지 깔끔하게 처리하면서 지도 위에 시각화하는 전 과정을 압축적으로 보여준다. 이 과정에서 엘라스틱 스택을 구성하는 개별 구성요소를 연결하는 방법뿐만 아니라 부드럽게 연계하기 위한 필터 활용은 물론이고 실제 비즈니스 논리 구현 과정에 필요한 프로그래밍에 이르기까지 빠짐없이 다루므로, 엘라스틱 스택을 제대로 활용하는 유스 케이스나 실무 사례로도 손색이 없다는 생각이다.
저자진이 자신들의 풍부한 현업 실무 경험을 바탕으로 심사숙고해서 선별한 내용을 가득 담은 이 책을 지렛대로 삼아, 아무쪼록 엘라스틱 스택의 풍부한 기능과 강력한 성능을 독자 여러분이 마주치는 현업의 문제를 풀어가는 과정에 적극적으로 활용할 수 있으면 좋겠다.