구글 빅쿼리는 대용량 데이터의 저장 및 분석에 뛰어난 성능을 발휘하는 클라우드 기반 서비스입니다.
대용량 데이터나 빅데이터 같은 용어는 이미 오래전부터 우리 주변을 맴돌았지만 이를 제대로 저장하고 활용할 수 있는 인프라스트럭처나 애플리케이션을 구현하기란 쉽지 않은 일이었죠. 대용량 데이터를 자체적으로 처리하기 위해서는 많은 전문 지식과 비용 그리고 이를 제대로 구축할 수 있는 경험있는 개발자와 지탱할 수 있는 인프라스트럭처가 필요했지만 모든 기업이 이런 조건을 갖출 수는 없었기에 더욱 어려웠는지도 모릅니다.
하지만 클라우드 기술과 서비스가 발전하면서 이제는 매우 저렴한 비용으로 기반 인프라스트럭처나 확장성, 성능에 대한 걱정 없이 누구나 쉽고 빠르게 사용할 수 있는 기술들이 등장하기 시작했고 구글 빅쿼리는 바로 이런 가치를 제공하는 서비스 중 하나입니다. 특히 기존의 ANSI SQL과 호환되는 쿼리 언어를 지원한다는 것도 큰 장점이라고 할 수 있습니다.
타 빅데이터 플랫폼 대비 구글 빅쿼리의 장점은 크게 2가지로 정리할 수 있습니다.
1. 쉬운 사용성
아파치 스파크나 하둡 등 기존의 빅데이터 플랫폼과 달리 빅쿼리는 ANSI SQL과 호환되는 쿼리 언어를 지원하므로 대용량 데이터 처리를 아직 경험하지 못한 개발자라도 RDBMS 사용 경험이 있다면 금세 활용할 수 있을 정도로 쉽습니다. 물론 데이터가 분산되어 있다는 점과 이를 효율적으로 활용하기 위한 분산 쿼리를 작성하는 경험을 쌓아야 하지만 완전히 생소한 언어를 배우거나 로직을 구현해야 하는 것에 비하면 장족의 발전이 아닐 수 없습니다.
2. 클라우드 인프라스트럭처
여타의 클라우드 서비스가 그렇듯 빅쿼리도 클라우드 기반 서비스이므로 사용자가 직접 인프라스트럭처를 운영할 필요가 없습니다. 따라서 비싼 운영비에 대한 부담도 줄어들죠. 빅쿼리의 비용 정책은 상당히 효율적이어서 사용자가 빅쿼리의 특징을 충분히 이해하고 주의를 기울인다면 훨씬 저렴한 비용으로 훨씬 빠른 시간 내에 원하는 결과를 얻어낼 수 있습니다.
이 책은 이와 같은 빅쿼리의 탄생부터 아키텍처, 그리고 활용에 이르기까지 개발자가 필요한 지식을 재미있으면서도 실용적인 예제와 함께 설명하고 있습니다. 구글에서 클라우드 데이터 분석과 머신러닝 제품 개발에 오랜동안 빅쿼리를 활용해 온 저자진의 경험과 노하우는 이 책을 읽는 독자에게 큰 도움이 될 것입니다. 서비스에 새로운 기능이 빠르게 추가되는 클라우드 서비스를 다루는 책이다 보니, 이 책도 출간 후 7개월 만에 업데이트가 있었고, 다행히도 저자의 협조를 받아 해당 내용을 모두 반영해 출간할 수 있었습니다. 이 번역서는 최신 업데이트를 포함해 공역자이신 변성윤 님이 추가로 저술한 부록까지 포함하고 있으니 가장 최신 버전의 빅쿼리에 대해 즐겁게 학습하실 수 있으리라 믿습니다.
좋은 책과 더불어 한국어판 독자를 위해 특별히 서문까지 보내 준 저자 발리아파 락쉬마난과 조던 티가니에게 고마운 마음을 전합니다. 끝으로 어려운 시기에도 개인의 역량 강화와 대한민국 소프트웨어 산업의 발전을 위해 늘 노력하는 독자 여러분을 응원합니다. 고맙습니다.
- 장현희
파이썬은 언어 자체의 간결함과 높은 가독성 및 유연성으로 원래 인기가 높은 프로그래밍 언어였지만, 특히 데이터 과학과 머신러닝/인공지능 분야에 더욱 널리 사용되고 있습니다. 넘파이(NumPy)나 텐서플로(TensorFlow), 파이토치(PyTorch) 등 고품질의 우수한 라이브러리의 등장은 파이썬의 인기에 큰 영향을 미쳤습니다.
이 책은 파이썬 초급자는 물론 고급 사용자에게도 많은 도움이 될 수 있는 다양한 기법을 소개합니다. 50여 개의 실용적인 문제를 단 한 줄의 파이썬 코드로 해결해 보면서 파이썬이 얼마나 간결하고 우수한 문법을 제공하는지, 얼마나 다양한 라이브러리를 얼마나 효과적으로 활용할 수 있는지를 여실히 보여주는 것은 물론, 그 동작 원리를 매우 상세히 설명해 줍니다. 특히 각각의 챕터를 할애해 파이썬의 활용도가 높은 데이터 과학과 머신러닝 분야를 집중해 다루는 것도 이 책의 매력 포인트라 할 수 있습니다.
저자도 이 책의 말미에서 설파하듯이 어떤 문제를 해결하는 코드를 한 줄로 작성하는 것을 무조건적으로 좋다고 말할 수는 없겠지만, 분명히 도움이 되는 부분도 있습니다. 한 줄 코드는 작은 문제를 효율적으로 해결하며 가독성과 코드의 효율을 높이고 특히 명령줄 인터페이스에서 빠르게 데이터를 처리하거나 파일을 직접 조작하는 등의 작업을 효과적으로 수행하는 데 큰 도움이 됩니다.
모쪼록 이 책 독자 여러분의 파이썬 코딩 스킬을 한 단계 더 발전시키는 데 도움이 되길 바랍니다.
빅데이터라는 용어는 이미 수년 전부터 일상 생활에서까지 사용될 정도로 보편화되었습니다. 간혹 잘못 사용되는 경우도 없지는 않지만 빅데이터는 이제 정치, 사회, 경제, 문화, 과학 기술 등 거의 모든 영역에 걸쳐서 가장 중요한 키워드 중 하나로 자리잡고 있죠.
가장 큰 이유는 일상 생활의 많은 부분에서 데이터의 중요성이 부각되었기 때문입니다. 때문에 많은 기업들이 데이터 주도Data-Driven 문화를 도입하며 빅데이터 분석을 통해 더욱 편리한 사용자 경험의 제공, 제품과 서비스의 개선, 나아가 더 많은 이익 창출을 위해 노력하고 있습니다. 이 모든 노력의 근간에는 각 기업들이 오랜 시간을 들여 수집해 온 데이터가 있습니다.
하둡은 초기부터 빅데이터 솔루션으로 많은 관심을 받으며 빠르게 성장해 온 기술이자 프레임워크로, 대용량의 데이터를 저장하고 분석하여 좀 더 의미 있는 데이터를 산출하기 위한 포괄적인 기술들을 경제적으로 구현하기 위한 노력의 결정체입니다.
덕분에 이미 많은 기업이 하둡을 이용한 빅데이터 분석을 수행하고 있으며, 대부분은 아직 온프레미스 환경에 구축되어 있지만, 여러 공개형 클라우드 서비스들이 확장 가능한 하둡 서비스를 출시하면서 클라우드로의 이전도 활발히 진행되고 있습니다.
이 책은 온프레미스 환경부터 공개형 및 비공개 클라우드 환경에 이르기까지, 다양한 환경에서 기업을 위한 하둡 클러스터를 성공적으로 배포하고 운영하는 데 필요한 기술적 노하우를 아낌없이 전수해 줍니다.
저 또한 하둡 클러스터를 직접적으로 구축하고 운영해 본 경험이 아주 많지는 않지만, 그간 크고 작게나마 대용량의 데이터를 다양한 방법으로 처리해 본 경험 덕분에, 이 책을 통해 하둡을 좀 더 자세히 이해하게 되었으며, 빅데이터에 대해 만족할 만한 통찰을 얻을 수 있었습니다.
다만 이 책은 빅데이터에 처음 입문하는 초보자에게는 다소 어려울 수 있지만, 소규모라도 하둡 클러스터를 온프레미스 환경이나 클라우드 환경에서 구축하고 운영해 본 경험이 있는 독자들에게는 큰 도움이 될 수 있는 책입니다.
- 장현희
마이크로서비스 아키텍처는 이제 클라우드 기반의 분산 환경을 기반으로 하는 애플리케이션 개발 분야에서 주류 아키텍처로 자리매김하고 있지만, 제대로 된 마이크로서비스 아키텍처를 구축하고 이를 기반으로 확장성 있는 애플리케이션을 개발하는 것은 결코 쉬운 일이 아닙니다. 저는 지금 약 5년째 마이크로서비스 기반의 애플리케이션을 C#으로 개발 중이지만, 이 책을 번역하면서 자바 개발자들에 대한 부러움에 몸서리를 칠 수밖에 없었습니다. 마이크로서비스를 구현하기 위해 필요한 모든 플랫폼이 준비된 환경이 제게도 허락되었다면 저의 지난 5년이 이처럼 어렵고 힘들지는 않았을 테지요. 이 책은 클라우드 네이티브 애플리케이션을 마이크로서비스 아키텍처를 기반으로 개발하고 운영하기 위해 필요한 정보를 폭넓게 다루는 효과적인 입문서입니다. 단순히 클라우드 파운드리라는 플랫폼의 소개를 넘어, 효율적이고 확장가능하며, 신뢰할 수 있고 스스로 회복할 수 있는 분산 애플리케이션 개발에 대한 기법과 노하우가 고스란히 담겨있는 이 책은, 마이크로서비스라는 바다를 항해하는 데 꼭 필요한 길잡이가 되어 줄 것입니다. 클라우드 및 분산 환경에 대한 저자들의 폭넓은 노하우와 전문성, 그리고 이에 뒤지지 않는 경험과 역량을 보유하신 역자분들의 노력이 결집된 이 책을 통해 마이크로서비스 아키텍처로의 첫 발을 자신있게 내딛으시기를 바랍니다.
(중략) 본론으로 들어가서 이 책은 소프트웨어 개발자가 하나의 소프트웨어를 구현해 나가는 데 필요한 배경 지식부터 범용적으로 활용되는 디자인 패턴과 그 사례, 그리고 완성된 소프트웨어까지 총망라하고 있다. 저자가 말했듯이 이 책은 처음부터 끝까지 정독을 해도 되고 어느 정도 수준에 오른 개발자라면 그저 옆에 두고 필요한 부분만 골라 읽어도 된다. 중요한 것은 한 장 한 장 읽어가면서 그 내용을 완벽하게 이해하고 실무에 적용하도록 노력해야만 한다는 점이다. 비단 이 책에만 해당되는 것은 아니겠지만 그렇게 함으로써 여러분은 이 책이 가진 가치를 피부로 느끼게 될 것이다. 지금까지 10권이 넘는 책을 집필/번역해온 역자에게 있어 이 책은 지금까지 역자가 출간해온 책 중에 가장 가치 있고, 영향력 있으며, 오래도록 소장하고픈 가치 있는 책이다.
한국과 호주, 미국, 캐나다 등 여러 나라의 기업에서 소프트웨어 엔지니어로 일하면서 공통적으로 경험했던 한 가지는 좋은 엔지니어링 문화를 구축하는 것은 언어와 문화를 막론하고 어렵다는 점입니다. 사실 좋은 소프트웨어 엔지니어링 문화라는 것의 정의 또한 그다지 구체적이지는 않지요.
그럼에도 불구하고 이 분야는 끊임없는 연구와 노력, 발전을 거듭하며 좋은 소프트웨어 엔지니어링 문화의 정의를 조금씩 구체화해 갔습니다. 그리고 그렇게 구체화된 문화를 소개하고 있는 책이 바로 이 책입니다.
한국에서 태어나 한국에서 소프트웨어 엔지니어로 성장한 저는 이 책에서 소개하는 내용이 지금 국내 기업의 소프트웨어 엔지니어링 문화와 아직은 많은 차이가 있다고 느낍니다. 이는 단지 엔지니어링 팀의 문제라기보다는 전반적인 기업 마인드의 차이에서 오는 문제라고 생각하고요.
저는 약 10년간 해외 생활을 하다가 최근 한국의 기업에서 프린시펄 소프트웨어 엔지니어로 1년 남짓한 시간을 보냈습니다. 이 기간에 제가 추구했던 엔지니어링 팀의 문화는 이 책에서 소개하는 내용과 거의 일치합니다. 이 책이 조금 더 일찍 출간되어 저의 동료들의 손에 쥐여줬더라면 제가 원했던 문화를 구축하는 것이 조금은 더 수월하지 않았을까 하는 아쉬움도 있지만 그건 모를 일이지요.
좋은 엔지니어링 문화를 개인의 노력만으로 구축하기란 거의 불가능에 가깝기 때문입니다. 좋은 문화를 경험한 리더가 아무리 좋은 문화를 만들려 해도 동료들이 이해하고 따라주지 않으면 소용이 없습니다. 좋은 문화를 경험한 동료가 아무리 좋은 문화를 만들려 해도 리더가 그 뜻을 지지해주지 않으면 그 또한 소용이 없고요. 어쩌면 이 책을 읽는 여러분도 그런 경험을 했을지도요.
그렇기에 이 책은 비단 이제 막 소프트웨어 엔지니어링 분야에 발을 디딘 신입 엔지니어뿐만 아니라 시니어 엔지니어, 엔지니어링 리드, 나아가 CTO에 이르기까지, 효율적인 의사소통으로 서로 존중하며 함께 목표를 이루기 위해 노력하는 엔지니어링 문화를 팀에 들여오고자 하는 모두에게 강력히 권장할 만한 책입니다. 게다가 엔지니어링 조직 전체가 이 책에서 소개하는 문화를 도입하기 위해 함께 노력한다면 그 영향력과 효과는 더욱 강력해질 테지요.
저는 지금 새로운 곳에서 또 다른 목표에 도전하기 위한 시점에 와 있습니다. 이 책이 앞으로의 저는 물론 여러분께도 훌륭한 지침과 가이드가 되어줄 것이라고 믿어 의심치 않습니다.
이 책은 HTML5의 새로운 기능들을 웹 기반 게임 개발을 통해 소개하고 있다. 아마도 이 책의 필자는 HTML5가 기존의 엔터프라이즈 웹 애플리케이션 분야뿐만 아니라 B2C(Business to Customer) 서비스 분야, 그리고 지금까지 불가능할 것으로 여겼던 엔터테인먼트 애플리케이션 분야까지 섭렵할 수 있는 가능성을 보여주고 싶었을 것이며, 실제로 이 책의 게임 예제를 통해 이를 증명해 보이고 있다.
책의 전체 구성이 하나의 게임 애플리케이션을 완성하는 일련의 단계로 구성되어 있기에 HTML5의 상세 명세나 새로 추가된 태그나 특성들을 일일이 소개하고 있지는 않다. 그러나 HTML5를 언급할 때 항상 따라다니는 오디오나 비디오 지원을 비롯하여 웹 소켓, 웹 작업자, 로컬 저장소, WebGL 등 굵직굵직한 기능들에 대한 완벽한 사용 예제를 보여줌으로써 어느 분야에서든 이러한 기능들을 활용할 수 있는 실용적인 경험을 학습하기를 원하는 독자들에게는 안성맞춤이라 할 수 있다.