알라딘

헤더배너
상품평점 help

분류

이름:김용환

국적:아시아 > 대한민국

최근작
2020년 12월 <예제로 배우는 도커 2/e>

빅데이터 분석을 위한 스칼라와 스파크

하둡 맵리듀스(Hadoop MapReduce) 프로그래밍은 최근 몇 년 동안 잘 사용되고 있습니다. 또한 데이터가 저장된 하둡 분산 파일 시스템을 기반으로 하는 분석, 추천 프로그래밍은 하둡 내부에서만 가능했기에 개발자들이 하둡 인터페이스를 사용해 개발해야 했습니다. 그러나 일반 개발자가 이해하기 어려운 개념과 인터페이스가 있어 하둡과 하둡 맵리듀스를 잘 이해하는 개발자가 전문적으로 개발하곤 했습니다. 일반 개발자들이 쉽게 분석할 수 있도록 아파치 하이브(Hive) 등 다양한 하둡 관련 프레임워크가 사용되기 시작했습니다. 그러나 여전히 유연하지 않을 뿐 더러 하둡 맵리듀스 개발은 변화되지 않았고, 테스트 코드 개발 역시 쉽지 않았습니다. 하둡 프로그래밍의 약점은 대용량 데이터에 대한 실시간 처리입니다. 따라서 하둡 대신 실시간 데이터를 처리하는 메시징 큐(예, 카프카)를 사용하고 있습니다. 그러다 보니 스트리밍 처리를 처리하기 위해 아파치 스톰(Apache Storm), 스파크 스트리밍(Spark Streaming), 아파치 플링크(Apache Flink) 등 많은 오픈 소스가 쓰이고 있습니다. 저는 현업 개발자이지만 다양한 NoSQL, 대용량, 비즈니스에 관심이 많습니다. 저는 스칼라/스파크를 사용해 애플리케이션을 개발했고, 메소스/마라톤 및 쿠버네티스에서 애플리케이션에서도 애플리케이션을 개발했습니다. 따라서 하둡 맵리듀스 프로그래밍은 스파크로 대체될 것이라는 굳은 믿음이 있습니다. 누구나 스칼라를 제대로 알 수 있다면 하둡 맵리듀스 프로그래밍을 스칼라 기반의 스파크 프로그래밍으로 대체 및 보완할 수 있을 것이라 확신합니다. 저뿐 아니라 많은 개발자가 하둡 맵리듀스 프로그래밍, 기존 파이프라인 프로그래밍 및 머신 러닝 프로그래밍을 점차 스파크 프로그래밍으로 대체되고 보완하고 있습니다. 스트리밍 처리, 대용량 분석 처리, 추천 시스템 개발, 인메모리 병렬처리, 머신 러닝까지 여러 분야의 애플리케이션을 스파크 하나만 알면 어느 정도 진행할 수 있습니다. 따라서 람다 아키텍처를 스파크로 쉽게 처리할 수 있습니다. 스파크는 CNN과 같은 딥러닝을 지원하지 않지만 텐서플로(Tensorflow)와 쉽게 연동할 수 있습니다. 그리고 스파크는 자바, 스칼라, 파이썬, R 언어를 지원하기 때문에 언어에 대한 부담이 가장 덜합니다. 특히 스칼라의 함수형 언어의 특징과 데이터프레임을 추상화한 스칼라 기반의 스파크를 활용함으로써 빅데이터를 논리적인 프로그래밍으로 쉽게 처리할 수 있습니다. 많은 개발자가 스스로 공부하며 빅데이터, 머신 러닝의 영역으로 진입하고 있는데 그에 함께 가고 싶습니다. 이 책은 전반적으로 설명이 많고 그림이 풍부합니다. 특히, 집계 부분은 중요한 내용을 잘 설명하고 있습니다. 저는 이전부터 통계와 머신 러닝을 공부하고 있었는데 실제 스파크 애플리케이션에서 어떻게 연동되는지는 이 책을 통해 잘 이해하게 됐습니다. 머신 러닝을 처음 도전하시는 분에게는 이 책이 좀 어렵다고 느낄 수 있겠지만 많은 도움이 될 것입니다. 빅데이터 분석과 머신 러닝에 대한 많은 내용을 포함한 '전과' 같은 이 책이 여러분들에게도 현업에서 큰 도움이 되면 좋겠습니다. 이 책은 원서와 달리 최신 2.3.2 버전으로 작성됐습니다. 기존의 원서에서 제공하는 코드의 오타와 호환성을 수정해 옮긴이의 github 저장소(https://github.com/knight76/Scala-and-Spark-for-Big-Data-Analytics)를 제공하고 있으니, 참고하시기 바랍니다.

셸 스크립트 프로그래밍 입문 4/e

리눅스는 무료 운영체제지만 안정성이 좋아 많은 회사에서 서버 환경으로 사용되고 있다. 이제 리눅스를 쓰지 않는 IT 회사는 찾아보기 어렵다. 또한 개발과 운영을 동시에 진행해야 하는 데브옵스라면 리눅스는 필수로 알아야 할 운영체제가 되고 있다. 프로그래밍 언어를 사용해 개발된 애플리케이션을 리눅스에서 실행하고 관리하기 위해서는 간단하게 리눅스에 대한 기본 지식을 습득하고 셸 프로그래밍을 기본적으로 해야 한다. 게다가 최근 많은 IT 회사에서 개발자 직군에게 유닉스 계열의 OS X가 설치된 맥북을 지급하고 있다(또한 디자이너 직군과 개발자 직군 뿐 아니라, 일반 기획자와 사무직 직군에게도 지급되고 있어서 맥의 OS X를 알아야 하는 상황이다). 따라서 서버 환경에서만 작업할 수 있는 환경이 로컬 환경에서도 동일하게 구축할 수 있게 됐다. 데브옵스, 클라우드, 도커 기술이 보편화하면서 특히 셸 프로그래밍은 기본적으로 알아야 할 내용이 됐다. 이제는 피해갈 수 없다. 선택이 아닌 필수 지식에 가까워서 부담스러울 수 있겠지만 독자 여러분들이 즐겁게 배우고 리눅스를 깊이 알아가면 좋겠다. 이 책은 셸 프로그래밍을 배우길 원하는 개발자, 시스템 엔지니어, 일반인에게도 도움이 된다. 게다가 이 책의 예제와 설명은 유닉스, 리눅스, OS X 모두를 지원하는 POSIX 표준 셸을 기반으로 한다. 따라서 이 책에서 배운 기술을 대부분의 유닉스 계열 운영체제에서 사용할 수 있다. 많은 유틸리티와 셸 프로그래밍 기술 등 현업에서 적용할 만한 내용이 이 책에 가득하다. 훌륭한 책인 만큼 여러분에게 추천하고 싶다. 나는 리눅스를 평생 친구로 생각해왔다. 특히 윈도우보다 리눅스를 좋아한다. 아마도 대학생일 때, 학교에 있는 유닉스 터미널에서 MUD 게임을 하면서 점점 유닉스 운영체제에 관심을 갖게 된 것 같다. 그리고 조금씩 리눅스 유틸리티와 셸 프로그래밍에 대해 배운 내용을 블로그에 정리하기 시작했다. 이전 직장에서는 리눅스를 조금 안다는 이유로 커널 디바이스 프로그래밍을 해볼 좋은 기회를 얻었다. 리눅스 유틸리티를 알고 리눅스의 동작 방식을 이해하고 때로는 커널 내부 구조를 공부하며 리눅스 지식을 넓히는 것이 좋았다. 아무래도 리눅스 운영체제가 내 말을 알아듣고 내가 원하는 동작을 하는 것이 좋았기 때문이리라. 이 책을 읽는 분들도 내가 느꼈던 희열을 함께 느끼면 좋을 것 같다. 파이팅!

실무자 관점에서 다룬 마이크로서비스 아키텍처 2/e

저는 처음 근무했던 알티캐스트에서 셋톱박스 미들웨어 개발에 참여했습니다. 미들웨어는 운영체제 또는 하드웨어 벤더의 인터페이스를 연동하는 포팅 레이어, JVM, 애플리케이션 관리 레이어, 통신 레이어, 서비스 정보 관리 레이어 등 다양한 모듈을 하나의 바이너리로 생성한 다음 하드웨어 플래시 롬에 저장해 셋톱박스에 자바 애플리케이션을 돌아가도록 했습니다. 모놀리스(Monolith) 구조였고 모듈별 강한 응집도, 낮은 결합도를 목표로 하고 모듈별 담당자를 둬서 생산성을 높였습니다. 단점이라면 하나의 문제만으로도 전체적인 품질을 떨어뜨릴 수 있다는 것이었습니다. 이후에 근무하던 NHN 시절에는 네이버와 한게임 플랫폼을 각각 마이크로서비스 아키텍처(MSA)와 비슷한 상태로 실험 및 개발, 운영했습니다. 또한 쓰리프트(thrift)와 같은 자체 IDL을 서비스에 사용하기도 했습니다. 그리고 서비스마다 API 서버를 구축해 유기적인 결합 상태로 운영했습니다. 저도 여기에 동참해 동료들과 함께 공통 모듈을 개발하기도 했습니다. 하지만 너무 많은 서버 노드로 인해 패킷이 손실되기도 하고 어디서 문제가 생기는지 추적하는 것이 어려워졌습니다. 점차 인원이 줄어들면서 모듈 또는 서비스 운영이 힘들어졌고, 스프링을 적용한 모놀리스 아키텍처를 선호하기도 했습니다. 독립 시스템의 통신 비용, 비교적 낮은 성능, 복잡한 프로토콜, 이유를 알 수 없는 패킷 손실, 유지 보수 인력 등의 부족으로 더욱 모놀리스 아키텍처를 추구하게 됐습니다. 모놀리스 아키텍처에서 사용하는 언어는 하나이고 코드 저장소를 함께 사용합니다. 그래서 문제 파악이 쉽고 통신 비용이 거의 없습니다. 내부 모듈 간의 통신은 호출로 사용하고 외부 통신에만 프로토콜을 사용하니 간결하고 효율성이 높습니다. 따라서 문제 해결이 더욱 쉽기에 개발 인력이 적어도 운영할 수 있는 구조가 됩니다. 그러나 개발자의 자유도는 떨어지고 점차 높아지는 코드의 복잡성(모듈의 결합도가 느슨해짐)으로 인해 코드 유지 보수 시간과 배포 시간이 길어지는 단점이 있습니다. 요즘에는 SOA(Service Oriented Architecture), 애자일, DDD(Domain Driven Design), 함수형 언어의 부흥, 클라우드, 아파치 카프카, 폴리그랏(Polyglot), 데브옵스, 도커 기술(쿠버네티스, 이스티오)이 트렌드에 맞게 마이크로서비스 아키텍처가 다시 부흥하고 있습니다. 마이크로서비스 아키텍처의 단점을 이겨낼 수 있는 도커, 비동기 통신 기술, 서킷 브레이커, 추적, 서비스 탐색, 서비스 메시 등 수많은 기능들이 생기고 데브옵스 툴이 계속 오픈소스로 나오면서 개발과 운영이 쉬워지고 있습니다. 이제는 넷플릭스와 아마존처럼 복잡한 비즈니스를 마이크로서비스 아키텍처로 개발 및 운영하는 것이 성공 사례가 되고 있습니다. 한편 세그먼트사의 사례와 같이 마이크로서비스 아키텍처의 단점이 너무 많아 모놀리스 아키텍처로 되돌아간 사례도 있습니다(http://www.ciokorea.com/news/39258). 서비스가 너무 많아 어느 코드 저장소에 어느 프로젝트가 있는지 모르는 경우, 마이크로서비스에서 사용된 언어가 달라 동일한 코드를 각각 구현하다 보니 비슷한 코드들이 산재된 경우, 비슷한 코드를 라이브러리 버전 업을 할 때 관련된 많은 서비스의 라이브러리를 완벽하게 처리하지 못하는 경우 등 다양한 단점이 발생할 수 있습니다. 이 책을 번역하면서 소프트웨어의 본질에 대해 다시 돌아보게 됐습니다. 또한 모놀리스 아키텍처든 마이크로서비스 아키텍처든 모듈, 사람, 정책과 관련된 전략이 중요하다는 것을 알게 됐습니다. 모놀리스 아키텍처에서 마이크로서비스 아키텍처로 변경하려는 작업은 시스템 아키텍처를 완전히 바꾸기 때문에 신중할 필요가 있고 반드시 전략이 필요합니다. 이 책은 마이크로서비스에 대한 전략과 기술을 잘 설명하고 있습니다. 잘 들여다보면 각 개발 팀은 지방 분권 체제를 가진 국가처럼 지방자치단체장의 리더십으로서의 적절한 권한, 책임을 가집니다. 따라서 리더십을 전혀 생각하지 않고 마이크로서비스를 단순히 개발 팀이 원하는 언어를 사용해 마음대로 개발하는 것은 이 원칙에 맞지 않습니다. 국가 수장의 리더십을 존중하듯이 마이크로서비스 아키텍처에 대한 정책을 개발 팀이 존중하고 따라야 합니다. 이 책은 마이크로서비스 아키텍처와 다양한 기술만 나열하지 않습니다. 소프트웨어의 모듈이 무엇인지, 마이크로서비스 아키텍처에서 중요한 부분이 무엇인지 강조합니다. 그리고 스프링 프레임워크와 도커, 도커 컴포즈(docker compose) 기반의 예시로 위에 소개한 툴을 설명합니다. 이 책은 개발자, 아키텍트, 데브옵스, 관리자 모두에게 도움이 되는 좋은 책입니다. 역자가 최근에 사용해본 좋은 기술과 고민을 이 책에서 잘 소개하고 있으니 많은 도움이 될 것입니다.

예제로 배우는 도커 2/e

요즘은 도커를 사용해 서비스로 활용하는 것뿐 아니라 툴, 테스팅, POC로 사용하는 경우가 많아졌습니다. 그만큼 도커는 점점 대중화되고 있습니다. 도커는 효과적으로 해결할 수 없었던 많은 문제를 해결하기 위해 패키징돼 유지 관리하는 툴로 사용되고 있습니다. 도커는 최고의 오픈 소스로서 여가 시간을 활용하고 기술 부채를 극복하며 매일 학습하도록 도전하게 만듭니다. 하지만 우리는 도커의 내부 구조를 얼마나 이해하고 있을까요? 저는 도커로 파이썬, 스칼라/자바 애플리케이션을 쿠버네티스 클러스터에 배포하고 운영한 적이 있습니다. 당시 "도커를 깊이 알지 않아도 다 돌아가는구나."라고 생각했던 적도 있습니다. 하지만 결국 도커에 대한 얕은 지식으로 문제가 발생해 '삽질'할 때가 많았습니다. 단순히 커맨드만 안다고 도커를 이해했다고 말하기는 어려웠습니다. 이 책을 보고 나서 도커를 상대하는 것과 더불어 쿠버네티스도 이해되기 시작했습니다. 도커의 단점을 파악하니 도커의 보안 이슈를 이해할 수 있었습니다. 또한 마라톤/메소스 및 쿠버네티스와 같은 오케스트레이션 툴도 제대로 보이기 시작해 앞으로 더 잘 사용하고 싶어졌습니다. 저는 도커가 개발자와 데브옵스에게 평생 친구가 될 것이라고 장담합니다. 점차 도커는 대중화될 것이고 곳곳에서 사용될 것입니다. 이 책으로 도커를 깊이 알아가는 기회가 되면 좋겠습니다. 이 책은 VM에서 전환하기, 시스템을 마이크로 서비스로 나누기, 영속성 볼륨, 고급 이미지 구축 기술, 지속적 통합, 셀레늄 테스트, etcd와 confd, 네트워크 시뮬레이션, 보안, 모니터링, 성능 및 디버깅 등과 같은 컨테이너와 관련된 실무 이슈를 해결하는 내용을 담고 있습니다. 상용 환경에서 도커를 다루기 위해 중요한 설정 관리 및 오케스트레이션 툴을 설명합니다. make와 같은 전통적인 유닉스 툴, 도커 컴포즈, 헬리오스(Helios), 도커 웜 및 쿠버네티스와 같은 도커 기본 툴을 사용해 도커 파일(Dockerfile)을 관리하는 상세한 작업 예시를 소개합니다. 마지막으로 도커와 관련된 툴에 관한 버그와 단점을 실제로 작업을 수행할 수 있도록 실용적인 조언과 팁을 전합니다. 이 책은 도커 생태계에서 미래에 사용할 수 있는 툴과 기술을 확실하게 평가할 수 있는 능력을 제공하기 위해 실제 애플리케이션과 예시로 독자를 이해시키고자 합니다. 여러분도 도커에 몰입해 전체 소프트웨어 생명 주기 동안 흥미로운 소프트웨어 기술에 자극받길 바랍니다.

일래스틱서치 고급 기능의 개념과 활용

일래스틱서치는 루씬(Lucene)을 기반으로 만들어졌지만 복잡한 루씬 API를 쓰지 않고도 쉽게 검색할 수 있도록 도와주며, 검색 성능도 탁월하다. 또한 주키퍼(Zookeeper) 없이 클라우드 환경에서 스케일링하기 쉽고, 복제 기능을 지원해 데이터 손실이 없는 NoSQL이다. 이제 일래스틱서치는 검색 애플리케이션을 개발할 때 선택이 아닌 필수로 사용하고 있다. 나는 카카오 스토리 서비스에서 서비스를 개발하며 MySQL DB, 일래스틱서치, 카산드라, 레디스, 몽고DB, 하둡, Hbase를 이용해 개발해왔다. 동료들과 함께 다양한 스토리지를 사용하고 아키텍처를 설계하며 즐겁게 개발하다 보면 이미 스토리지 버전이 올라가 있었다. 특히 사용 중인 일래스틱서치가 1.4였는데, 현제 일래스틱서치 공식 버전은 5.x이고 조만간 6.x로 올라갈 것 같다. 일래스틱서치는 버전이 빠르게 올라가며 점점 기능과 성능이 좋아지는 NoSQL이다. 따라서 기존에 사용하던 방법이 조금씩 맞지 않거나 새로운 API가 나타난다. 특히 일래스틱서치를 이용해 개발하거나 운영하다 보면 이후 버전이 어떻게 바뀌었고 좋아졌는지 알기가 쉽지 않고, 내가 운영을 잘하고 있는지가 궁금할 때가 많다. 데브옵스의 관점으로 어떤 아키텍처와 기능을 사용하고 운영하는 것이 더 좋은지 살펴보려 한다면 이 책을 추천한다. 이 책은 일래스틱서치 API를 하나씩 따라 하는 예제 관점 대신 일래스틱서치의 1.x버전과 5.x버전 사이의 많은 변화를 다룬다. 또한 특정 상황에서 어떤 쿼리를 보내야 좋을지, 새로운 집계는 무엇인지, 스코어링 알고리즘이 무엇인지, 샤드 할당 동작 방식, 새로운 노드의 성격이 무엇인지, 샤드와 복제본 개수에 대한 설정 방식을 설명했습니다. 특히 새로 추가된 Painless 스크립트, 잘 만들어진 어드민 API, 플러그인 개발 방법, 요즘 많이 사용하는 일래스틱 스택도 설명하고 있다. 상세한 API 설명이 아닌 아키텍처 관점에서 일래스틱서치를 크고, 넓게 볼 수 있는 책을 번역하게 돼 실무자로서 기쁘게 생각한다.

하이브 핵심정리

하이브는 하둡을 기반으로 하는 데이터 웨어하우스 패키지입니다. 하이브는 하둡 HDFS의 대용량 데이터를 데이터베이스의 표준 SQL처럼 다룰 수 있기 때문에 SQL을 안다면 하둡도 쉽게 다룰 수 있습니다. 하지만, 하이브 언어인 HQLHive Query Langage는 SQL과 완벽하게 동일하지는 않습니다. 따라서 이 책에는 하이브 언어를 사용 할 때 알아야 하는 하둡 내부 구조와 주의할 내용이 담겨있습니다. 저는 카카오에서 대용량 서비스의 분석 업무를 진행할 때, 하둡 스트리밍(hadoop streaming)과 하이브를 사용합니다. 간혹 하이브가 없었더라면 하는 생각이 들 때면 아찔해지곤 합니다. 그만큼 하이브는 생산성을 높여주는 좋은 툴입니다. 최근에는 대용량을 다루는 작업을 병렬로 실행할 수 있는 스파크(Spark)라는 최신 툴이 사용되고 있습니다만, 스파크에서도 하이브를 연동하여 사용할 수 있는 환경(https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark)이 있기 때문에 하이브는 더욱 빛이 나고 있습니다. 이 책을 번역하면서 하이브에 대해 많이 배울 수 있었습니다. 이 책은 하이브 HQL의 중요한 부분을 설명하며, 하이브를 잘 확장하는 방법을 설명합니다. 하이브를 처음 접하는 독자나, 하이브의 전체적인 기능을 살펴보려는 독자가 참고할 만한 좋은 책이라 생각합니다.

Ansible 설정 관리

저는 네이버에서 백엔드 플랫폼을 개발하고 운영하는 업무를 했습니다. 그중 빌드/배포 서버 개발을 담당하면서 많은 것을 배우고 경험할 수 있었습니다. 자동화에 대한 고민들과 개발자들이 좀 더 효과적으로(편하게) 업무할 수 있는 방법에 대해 특히 많이 생각했던 것 같습니다. 현재 데브옵스(Devops)가 하는 비슷한 고민들이기도 합니다. 일반적인 웹/모바일 서비스 회사의 서버는 리눅스를 사용합니다. 리눅스가 설치된 서버에 들어가 라이브러리나 데이터베이스를 설치하고, 설정을 배포합니다. 운영하다가 하드웨어 문제(하드디스크, 전원 장비, CPU, 메모리)나 소프트웨어 이슈(리눅스 배포판 업그레이드)가 발생했을 때, 다시 설치하고 설정을 배포하려면 기존과 동일하게 작업해야 합니다. 자주 하는 작업은 아니지만, 매우 중요한 일입니다. 이런 작업이 자동화될 수 있도록 지원하는 것이 바로 배포 툴입니다. 과거에는 각 회사에서 담당 개발자의 취향에 맞게 개발되고 운영했지만, 현재 배포 툴이 점차 오픈소스로 바뀌면서 (각 상황에 맞게 최적화되어) 널리 사용되고 있습니다. 퍼펫(Puppet), 셰프(Chef), 앤시블(Ansible)이 대표적인 배포 툴입니다. 앤시블은 애플리케이션과 라이브러리를 쉽게 배포할 수 있는 자동화 툴입니다. 배포나 업데이트를 하기 위해 매번 서버에 접속해서 스크립트를 배포할 필요가 없습니다. 배포 스크립트 작성 없이 사용자 정의 설정만으로 에이전트(Agent) 없는 리모트 환경에서 SSH를 이용해 서버에 접근해서 작업할 수 있습니다. 현재 앤시블은 다른 툴과 달리 가장 빠른 추세로 확산되고 있습니다. 이렇게 단기간에 많이 사용되는 이유와 강점에 대한 제 생각은 다음과 같습니다 ■ 사용하기 쉽고, 간단해서 빠른 습득과 적용이 가능합니다. 이미 알려진 표준을 활용해 쉽게 사용할 수 있고, 유지보수 및 인수인계가 간단하고 쉽습니다. ■ 멀티 플랫폼을 지원합니다. 맥(Mac)/리눅스(Linux)/윈도우(Window)를 지원하며, 테스트 환경(Vagrant)에서도 사용할 수 있습니다. ■ 에이전트(Agent) 기반이 아닌 SSH 기반으로 스크립트 배포 없이 관리 서버에서 실행할 수 있습니다. ■ 멱등성(idempotence)(여러 번 적용하더라도 결과는 동일함)이 보장되는 모듈을 지원합니다. ■ 순차 실행뿐 아니라 병렬 실행을 지원해 좀 더 빠른 처리가 가능합니다. ■ 앞으로도 개발 가능성이 높고 개발자의 참여도가 높은 오픈소스 도구입니다. 앤시블 내부는 JSON으로 통신하며, 파이썬(Python)뿐 아니라 다른 언어에서도 호환되어 개발할 수 있습니다. 레드햇, 버라이즌, 애틀라시안, 트위터, 베리사인, EA, 에버노트, 나사(NASA), 고프로, 랙스페이스, 주니퍼 등 유수의 IT 기업들이 도입했으며, 1,000명이 넘는 개발자들이 앤시블 오픈소스에 공헌하고 있습니다. 국내에서 처음으로 앤시블 관련 서적을 번역하고 알릴 수 있어 영광입니다. 모쪼록 이 책이 앤시블을 활용하고자 하는 분들께 시원한 해결책을 제시하고, 하시는 업무에 실질적인 도움이 되기를 바랍니다.

ElasticSearch Cookbook 2/e

일래스틱서치는 루씬(Lucene)을 기반으로 만들어졌지만, 복잡한 루씬 API를 쓰지 않고도 쉽게 검색할 수 있게 도와주며, 성능도 탁월합니다. 또한 주키퍼(Zookeeper) 없이 클라우드 환경에서 확장을 쉽게 할 수 있으며, 복제본replica을 지원해 저장된 데이터의 손실이 없게 도와주는 NoSQL입니다. 저는 카카오에서 일래스틱서치를 이용해 서비스를 개발했고 현재 운영하고 있습니다. 현업에서 일래스틱서치를 처음 쓰다 보니 모르는 것도 많고, 배워야 할 것이 많았습니다. 기존의 여러 일래스틱서치 책에서 도움을 받았지만, Rest API뿐 아니라 자바, 파이썬으로 개발하는 방법, 플러그인 개발 방법, 운영 관점의 책이 필요했습니다. 이 책은 DevOps의 실무적인 관점으로 일래스틱서치를 이해할 수 있는 좋은 책입니다. Rest API뿐 아니라 파이썬, 자바 API를 사용해 효율적으로 개발할 수 있는 가이드를 제공합니다. 플러그인을 개발하는 방법도 살펴볼 수 있습니다. 또한 운영 관점에서 HQ나 HEAD 같은 모니터링 플러그인의 유용성을 설명하고, 리버 플러그인을 통해 여타 NoSQL과 연동하는 방법과 플러그인 개발 방법도 다룹니다. 아키텍처와 DevOps 관점으로 일래스틱서치를 살펴볼 수 있는 책을 번역하게 되어 기쁘게 생각합니다. 이 책에서 설명하는 일래스틱서치의 버전은 1.4입니다. 일래스틱서치의 1.x 버전을 사용하는 경우, 이 책을 참조할 수 있습니다. 그러나 최근에 일래스틱서치 2.0이 배포되면서 일부 바뀐 내용이 있습니다. 이와 관련한 상세한 내용은 https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes-2.0.html에서 참조할 수 있으며, 일래스틱서치의 2.0의 공식 문서는 https://www.elastic.co/guide/en/elasticsearch/guide/current/index-doc.html에서 확인할 수 있습니다.

Redis 핵심정리

프로그래밍을 시작하면서 캐시 솔루션에 대해 많은 고민을 했다. 캐시는 사용할 데이터를 웹 애플리케이션 내부 메모리에 저장하면 성능을 개선할 수 있지만, 데이터 양이 너무 많다면 메모리 이슈가 발생하기 때문이다. 특히 자바의 경우는 JVM 튜닝이 필수적이었다. 웹서비스가 성장하면서 캐시 솔루션이 많이 등장하기 시작했다. 때마침 LiveJournal에서 개발되고 페이스북에서 사용되면서 유명해진 멤캐시드(memcached)와 함께 레디스를 캐시 솔루션으로 사용할 기회가 생겼고, 현재 웹 애플리케이션은 캐시 아키텍처 덕분에 간결해지고 성능이 더욱 좋아지고 있다. 여러 프로젝트에서 레디스를 사용해봤지만, 이 책을 통해 레디스에 대한 충분히 이해함으로써 시야를 많이 넓힐 수 있었다. 기존에 사용하던 레디스 타입뿐 아니라 다양한 타입을 제대로 이해하고 활용할 수 있게 됐고, 트웸프록시(Twemproxy), 레디스 센티널(Redis Sentinel), 레디스 클러스터(Redis Cluster)의 장점과 단점을 더욱 세밀하게 알 수 있었다. 이 책을 통해 레디스 클러스터를 실전 배치에서 사용하게 됐다. 레디스를 처음 접하는 분, 레디스를 속속들이 알고 싶은 분, 레디스 3에 대해 제대로 알고 싶은 분, 다양한 언어의 레디스 클라이언트를 알고 싶은 분들에게 이 책을 추천한다.

Smack 스택을 이용한 빠른 데이터 처리 시스템

서버 개발자의 입장에서는 웹서비스든, 앱서비스든 단순히 서버를 개발하는 것만으로는 서비스가 완성되지 않는다. 서비스 개발이 완성됐다 하더라도 고객문의(CS), 시스템 모니터링 등 데브옵스 업무 등이 남아 있다. 서비스 데이터 또는 로그를 백엔드에 전달해 모니터링뿐 아니라 사용자의 활동 지표로 활용하기도 하고, 머신 러닝을 활용해 추천 친구나 추천 시스템을 개발하기도 한다. 서비스 로그를 파일로 저장한 후 파일 데이터를 옮겨 빅데이터 저장소에 해당 서비스 로그를 저장하는 아키텍처를 데이터 파이프라인(data pipeline)이라고 한다. 데이터 파이프라인 처리 아키텍처에서는 멀티 테넌시(multi-tenancy), 확장, 대용량 처리, 실시간 데이터 처리를 지원해야 한다. 또한 저장된 빅데이터 저장소를 기반으로 실시간 분석 및 대용량 처리를 하고 지표, 모니터링, 추천 시스템으로 활용해서 사용자의 재방문률을 높일 수 있는 인사이트를 얻어야 한다. 처음에는 데이터 파이프라인과 데이터 분석이 무척 낯설 수 있다. 나도 처음부터 파이프라인과 데이터 분석을 시작한 것이 아니라서 많이 낯설었지만, 회사에서 업무를 진행하면서 조금씩 알아가고 있다. 외국에서는 데이터 파이프라인과 분석을 완벽히 해결할 수 있는 방법으로 하나의 오픈소스가 아닌 여러 오픈소스를 묶어(스택) 데이터 프로세싱을 처리하기 위한 다양한 시도를 하고 있다. 이런 흐름 속에서 2016년, 샌프란시스코 베이 에어리어(San Francisco Bay Area)의 데이터 엔지니어링 회의 및 컨퍼런스에서 "Spark, Mesos, Akka, Cassandra, Kafka Laying down the SMACK on your datapipelines"(링크: https://goo.gl/ny5Lwm, 발표 동영상: http://goo.gl/XVuxj8)라는 주제가 발표됐다. 이런 발표의 영향을 받아 관련 내용이 본 도서로 출판하게 됐다. 이 책에서는 데이터 인메모리(in-memory) 분산 컴퓨팅 기능이 포함된 스파크(Spark), 클러스터 OS(Cluster OS), 분산 시스템 관리, 스케줄링, 확장 기능이 포함된 메소스(Mesos), 스칼라 언어의 액터 모델의 구현인 아카(Akka), 영속성 계층인 noSQL 데이터베이스인 카산드라(Cassandra), 분산 스트리밍 플랫폼(메시지 브로커)인 카프카(Kafka)를 기반으로 데이터 파이프라인 아키텍처를 구성하는 SMACK 스택을 소개하고 있다. 이 책은 SMACK 스택을 전혀 모르는 개발자를 위한 책이다. 개별 컴포넌트를 쉽게 설명했고, 파이프라인 스택에 대한 아키텍처를 배우기에 적절하다. 특히 마지막 3장은 사례를 통해 SMACK 스택을 기반으로 하는 아키텍처를 배울 수 있다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자