알라딘

헤더배너
상품평점 help

분류

이름:오세봉

최근작
2022년 11월 <카프카 스트림즈와 ksqlDB 정복>

아파치 플링크로 하는 스트림 데이터 처리

스트림 데이터 처리 프로젝트를 시작할 때 어떤 기술을 사용할지 많이 고민할 것이다. 아파치 스파크, 카프카 스트림, 아파치 플링크, 나이파이(NiFi) 등 다양한 선택 사항이 있다. 사실 무엇을 선택하든 처음에는 다들 비슷하게 느껴진다. 기능상으로 유사하므로 아무거나 사용해도 되겠다고 착각할 수도 있다. 나도 실시간 프로젝트를 시작할 때 처음에는 아파치 스파크와 아파치 플링크 중 어떤 것을 사용할지 많은 고민을 했다. 결국 아파치 플링크를 선택한 결정적인 이유는, 아파치 스파크가 "스트림은 작은 배치(batch)다"라고 접근하는 데 반해 아파치 플링크는 "배치는 데이터가 유한한 스트림이다"라고 접근하는 설계 철학 때문이었다. 초저지연을 목표로 하는 실시간 처리에 있어 배치로 스트림 데이터를 처리하면 지연이 발생할 수밖에 없다. 또한 이 책의 제목에서도 강조하는 '상태가 있는 스트림 처리'는 거의 아파치 플링크만이 완벽하게 구현했다고 볼 수 있다. 이 책은 아파치 플링크로 스트림 데이터를 처리하는 애플리케이션 개발만을 목표로 하지 않는다. 1장부터 3장까지는 일반적인 스트림 데이터 처리 이론부터 아파치 플링크의 구현 원리를 상세히 설명한다. 이 세 개의 장을 읽고 나면 여러분도 스트림 데이터 처리에 있어 '데이터 유실과 중복', '스트림 데이터의 기준 시간', '윈도우', '지연 시간', '단대단(End-to-End) 일치성' 문제 등 기본적인 스트림 데이터 처리 지식을 쌓을 수 있다. 따라서 개발자가 아니더라도 스트림 데이터 처리의 일반적인 지식이 필요한 독자라면 1장부터 3장까지 읽어볼 가치가 있다. 나머지 장은 스트림 데이터 처리 개발의 내용으로 개발자에게 특히 유용하다. 상태 관리, 윈도우 처리, 성능 최적화 등 어느 한 장이라도 소홀히 넘길 수 없을 정도로 훌륭한 내용으로 가득 차 있다. 이제 아파치 플링크는 스트림 처리뿐만 아니라 배치 처리까지 가능한 통합 데이터 처리 엔진으로 발전해 가고 있다. 아파치 스파크도 실시간 처리 기능을 계속 발전시키고 있어 이 두 프로젝트가 기능적으로는 수렴돼 가고 있다. 하지만 현재 기준에서 스트림 처리의 왕좌는 '아파치 플링크'다. 이 책을 번역할 때 최대한 번역투가 되지 않게 여러 번 리뷰를 진행했다. 그럼에도 일부 어색한 문장이 아직 있을 수 있으니 오역이나 어색한 부분이 있으면 지적해주길 바란다. 그리고 내가 아파치 플링크를 이용해 개발하면서 경험한 내용을 바탕으로 책 내용을 이해하는 데 도움이 될 만한 보조 설명을 군데군데 추가했으므로 조금이나마 도움이 됐으면 한다.

안드로이드 데이터베이스

1인 1스마트폰 시대에 안드로이드는 생활 속 깊숙이 파고들었고 스마트폰 시장에서 빼놓을 수 없는 플랫폼의 선두주자로 자리매김 했다. 또한 스마트폰을 넘어 패스트푸드 무인 계산기, 지하철, 쇼핑몰의 옥내 광고, 레스토랑 전자 메뉴판 등 주변의 다양한 머신에서 안드로이드를 볼 수 있는 광경도 이제 낯설지가 않다. 하지만 누구든지 안드로이드를 개발할 수 있는 접근성은 낮아졌으나 안드로이드의 높은 이해도가 필요하다. 모바일 데이터베이스는 엔터프라이즈급 데이터베이스의 데이터 양과 복잡한 관계를 갖지 않지만 클라이언트 데이터의 관리도 소홀히 할 수 없다. 이를 위해서는 클라이언트의 데이터베이스의 특성을 제대로 이해하고 파악해야 견고하고 효율적인 애플리케이션을 작성 할 수 있다. 또한 사용자의 데이터가 중요해지는 만큼 어떻게 이를 구조적으로 저장, 관리해야 하는지 전략을 내세워 데이터 무결성을 유지해야 한다. 이 책에서는 관계형 데이터베이스의 탄생부터 시작해 어떻게 지금의 모습으로 진화했는지 알아보고, SQL의 기초 및 개념에 배운다. 또한 실무에 바로 적용할 수 있는 안드로이드 SQLite 컴포넌트와 API를 이용해 데이터베이스 관리와 업그레이드 전략에 대해 알차게 다루었다. 안드로이드의 콘텐트 프로바이더, 인텐트뿐만 아니라, 서드파티를 이용한 원격 데이터를 사용자에게 보여주는 방법을 대해 기술했다. 모바일 애플리케이션 제작 시 필요한 기본적인 데이터 공유, 관리 방법에 대해 궁금하거나 사용자에게 데이터를 효율적으로 보여주길 원하는 독자에게 이 책을 추천한다.

카프카 스트림즈와 ksqlDB 정복

카프카 기반의 스트림 데이터 처리 애플리케이션을 개발하고 유지 보수한 지 어느덧 5년이 흘렀다. 처음 몇 개로 시작한 스트리밍 처리 애플리케이션은 그 증가 속도가 가파르게 빨라지고 있으며, 이 일을 함께하는 동료들도 많이 늘어났다. 스트리밍 처리 기술도 이 책의 카프카 스트림즈와 ksqlDB뿐만 아니라 아파치 플링크, 스파크 스트리밍 등 다양해지고 있다. 아마도 이 책을 선택한 독자들 중에는 이런 여러 스트리밍 데이터 처리 기술을 서로 비교해보고 싶은 분도 있을 수 있고, 스트리밍 데이터 처리 기술이 처음이라 익숙한 SQL이라는 단어에 이끌려 이 책을 선택한 분도 있을 수 있다. 이 책은 이런 두 목적을 가진 독자들을 모두 만족시킬 수 있는 내용으로 구성돼 있다. 1부에서는 스트리밍 데이터 처리의 기본 개념들과 카프카 스트림즈의 구현 원리를 상세히 설명하고 있다. 1부를 읽고 나면 여러분도 "스트림 데이터에서의 시간", "윈도우", "집계", "상태가 있는 스트리밍 데이터 처리" 등 기본적인 스트림 데이터 처리에 관해 많은 지식을 쌓을 수 있다. 따라서 개발자가 아니더라도 스트림 데이터 처리에 대한 일반적인 지식이 필요한 독자라면 1부를 꼭 읽어 보길 바란다. 2부에서는 1부의 내용을 바탕으로 ksqlDB를 상세히 다루고, 3부는 상용화에 필요한 여러 준비 사항과 단계 등 실무적인 내용을 설명한다. 이 책을 모두 읽고 나면 스트리밍 데이터의 기초부터 고급까지 모두 익힐 수 있게 되며, 실습과 함께 연습하다 보면 바로 실무에 적용할 수 있는 수준까지 다다르리라 기대한다. 개인적으로 이 책을 번역하면서 아파치 플링크와 카프카 스트림즈와 ksqlDB의 차이점에 대해 비교할 수 있는 좋은 기회가 됐다. 두 기술 모두 대부분의 기본 개념은 비슷하나 구현 방법이나 데이터 추상화 개념, 상태 관리 등에서 차이가 있었다. 어느 것이 더 낫고 부족한지는 여러분의 요구 사항에 따라 다르며, 아파치 플링크와 카프카 스트림즈를 비교해보고 싶은 독자가 있다면 에이콘출판사의 『아파치 플링크로 하는 스트림 데이터 처리』(2020)를 참고하는 것도 좋다. 이 책에서는 전달 보증(Delivery Guarantee)과 같은 스트리밍 데이터를 처리할 때 매우 중요한 다른 개념들도 소개하고 있으므로 기회가 닿으면 꼭 읽어 보길 추천한다. 서비스를 사용하는 고객은 점점 더 빠르고 정확한 반응을 원하고 있으며, 일괄 처리로는 이런 요구를 반영할 수 없다. 빅데이터 처리 분야에서 스트리밍 데이터 처리는 이제 선택이 아닌 필수가 돼 가는 느낌이다. 이 책을 선택한 여러분도 이번 기회에 변화하는 기술에 뒤처지지 않고 스트리밍 처리 분야의 전문가가 되길 희망한다.

케스케이딩 완벽 가이드

아파치 피그나 하이브는 하둡 맵리듀스를 추상화한 훌륭한 도구임에 틀림없다. 하지만 이런 도구들은 엔터프라이즈에서 사용하기 위해서 만든 것이 아니라서 엔터프라이즈가 요구하는 기능들을 포함하고 있지 않다. 이런 오픈 소스들은 엔터프라이즈가 주 대상이 아니라서 위에 나열한 기능들에는 별로 관심이 없다. 그런데 진보적 성향의 오픈 소스와 보수적 성향의 엔터프라이즈 사이의 부족한 부분을 채워줄 수 있는 도구가 있었으니 바로 케스케이딩이다.

하이브 완벽 가이드

몇 해 전부터 '클라우드', '빅데이터'라는 말이 IT 업계의 뜨거운 감자로 떠올랐다. 당시 나는 이런 트렌디한 단어에 무감각해져 있었다. 주기적으로 새로운 기술이 이슈가 되고 IT 업계를 달구다가 조용히 사라지는 것을 봐왔던 것이 이유였을지도 모르겠다. 하지만, 오랫동안 연락되지 않던 사람들을 다시 만나게 해주고 사회와 정치에 대한 불만을 자유롭게 쏟아내어 여론을 좌지우지하는 소셜 네트워크는 빅데이터에 대한 나의 무관심에 일침을 가했다. 전세계 60억 인구를 대상으로 서비스하는 이런 소셜 네트워크 회사들이 매일매일 쏟아지는 많은 양의 데이터를 저장하고 분석하여 더 나은 서비스를 제공하고자 노력하는 모습을 보았기 때문이다. 빅데이터가 세상을 변화시키고 있었고, 그 일을 해보고 싶은 생각에 빅데이터를 전문으로 하는 회사에 입사하게 되었다. 지금 와서 이야기지만, 입사 당시 내 모습을 생각해보면 얼굴을 들 수 없을 정도다. 빅데이터에 대한 열정만 있었지 이 분야에 대한 기술은 제로였다. 하둡부터 시작해야지 맘 먹었으나 배워야 할 것들이 너무 많고 어려웠다. 오픈소스이고 사람들의 관심도 많다 보니 버전도 여러 가지였으며 하둡을 기반으로 하는 오픈소스들도 너무 많아서 집중하지 못하고 지치고 말았다. 그러던 와중에 하이브 쿼리를 통해 실시간 검색을 가능하도록 하는 업무가 내게 떨어졌고 그 일을 계기로 하이브에 대해 서서히 알게 되었다. 처음 하이브를 접했을 때 친절하지 않은 문서와 중요한 순간에 터져 나오는 사소한 오류들은 내게 좋은 인상을 주지 않았다. 하지만 이런 불평들을 잠재우게 하는 하이브만의 매력은 너무 컸다. 바로 SQL 쿼리만 알고 있다면 맵리듀스를 작성하지 않아도 빅데이터 분석이 가능하다는 것이다. 물론 기존 관계형 데이터베이스와는 다른 하이브만의 몇 가지 개념들이 있긴 하지만 그렇게 어려운 내용은 아니었다. 수백 줄의 맵리듀스 코드를 한 줄의 SQL로 대체하는 하이브의 단순한 사용이 주는 교육 및 개발 시간의 절약은 사소한 문제를 극복할 만큼 큰 것이었다. 지난해 말 이 책의 원서가 출간되었을 당시 회사에서 이메일로 번역 참가자를 모집했다. 비록 내가 이 책을 쓰지는 않았지만 번역이라도 해서 국내에 하이브를 보급시키는 데 앞장서고자 하는 욕심에 번역에 참여하게 되었으며 대표 역자까지 맡게 되었다. 번역 일은 순탄하지 않았다. 여러 명의 역자들이 작성한 글의 문체와 어휘들을 통일하는 일은 주말과 여가 시간을 오롯이 반납해야 했다. 비록 힘들고 어려운 과정이었지만 고진감래라는 말처럼 번역은 잘 마무리되었고 현재 회사에서 그 동안 쌓아놓은 노하우도 부록으로 실을 수 있게 되어서 그 어떤 일보다도 보람이 컸다. 그동안 빅데이터와 하이브에 대해 어려움을 느꼈던 분들이 있다면 이 책을 통해 많은 도움을 받았으면 하는 바램이다.

MVC 구조의 확실한 해답 AngularJS 디렉티브

웹 프론트 프레임워크 중 많은 관심을 받고 있는 프레임워크로는 ExtJS, BackboneJS 등이 있다. 하지만 이들 프레임워크들은 MVC 구조 안에서 로직과 뷰의 영역을 분명하고 확실하게 분리시키지 못했다. 그리고 애플리케이션 테스트와 유지 및 보수도 쉽지 않았다. 이런 문제들을 해결하고자 등장한 구세주가 구글의 AngularJS다. AngularJS는 빠르게 변화하는 웹 환경에 딱 맞는 프레임워크라 해도 과언이 아니다. AngularJS 웹 애플리케이션은 다양한 서드파티 라이브러리와 자유롭게 연동할 수 있고, 그동안 프론트엔드 개발에서는 힘들었던 테스트 코드마저 쉽게 작성할 수 있도록 도와준다. 또한 서드파티를 이용한 단위 테스트부터 통합 테스트까지 모든 부분에서 테스트를 할 수 있는 환경을 제공한다. 특히, 이 책에서 다룰 디렉티브는 AngularJS의 핵심이며 꽃이라 할 수 있다. 이 책은 다양한 사례와 상세한 코드를 제공해 디렉티브의 장점을 빠르고 쉽게 익힐 수 있도록 도와준다. 디렉티브와 서드파티 라이브러리를 활용해 DOM 처리 방법을 자연스럽게 이해하고 어떻게 디렉티브 간에 통신하며 서로 결합해 컨텍스트를 공유하는지 살펴본다. 또한 디렉티브가 많은 양의 데이터를 바인딩할 때 생기는 성능 저하를 최적화하는 방법을 보여 줄 것이다. 이 책을 통해 기존 프레임워크와 AngularJS가 각각 어떻게 모델과 뷰를 분리하는지 이해할 수 있을 것이다. 또한 AnguarJS 디렉티브를 이용해 자신만의 태그와 프로퍼티를 만들어 HTML을 확장하고 모듈화할 수 있게 되길 바란다. AngularJS 프레임워크로 MVC 구조의 웹 애플리케이션을 구상 중이라면 이 책은 여러분에게 훌륭한 디렉티브(Directive)가 될 것이다.

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