알라딘

헤더배너
상품평점 help

분류

이름:최준

최근작
2024년 1월 <쿠버네티스로 구현하는 머신러닝>

고성능을 위한 언어 C++

현장의 여러 전문가 중 C++가 새로운 기술이고, 최근 경향에 맞는 주제라고 생각할 사람은 극히 일부일 것이다. 반면에 우리가 접하는 IT 세상에서 C++만큼 긴 시간 다뤄진 주제가 몇 개나 있을지 반문해볼 필요도 있다. C++는 그만큼 오랫동안 곁에 존재했고, 기술이 획기적으로 변화하고 발전하는 과정에서도 살아남았으며, 여전히 사랑받고 있다. 이미 C++에 익숙한 독자는 잠시 컴퓨터를 끄고, 편안한 의자에 앉아 이 책을 읽으면서 그동안 성능적인 측면에서 간과했던 부분이 없는지 살펴보길 권하고 싶다. 새로운 도전이라는 긴 여정을 앞둔 독자라면 책의 어느 한 부분에 얽매이지 말라고 얘기하고 싶다. 예를 들어 어떤 사람에게 객체나 오브젝트를 말하면 여러 속성을 가진 물건을 떠올릴 수 있다. 프로그램을 처음 배운 이는 클래스를 떠올리기도 하고, 숙련된 개발자 중에는 직접 만든 라이브러리를 머리에 떠올릴 수도 있다. 이렇게 용어는 각자 다른 형태로 관념이 된다. 처음부터 어떤 용어가 실제로 의미하는 모습 그대로 완벽하게 소화하기 어렵지만, 여러 번 실습하고 결과를 전체적으로 보는 과정을 지나 추상적인 단어도 결국 설명이 필요 없는 개념이 된다. 이 책은 번역서다. 원문을 옮기면서 저자가 전달하려는 의미를 그대로 전하는 것은 기본이다. 그러나 모국어로 다른 사람의 언어를 번역하면서 단어 선정에 하나의 기준이 더 필요했고, 의미를 가장 잘 전달하는 단어를 골라야 했다. 표준어라 할지라도 이해를 더 어렵게 만들거나 의미가 달라질 경우 가능하면 실제로 사용되는 단어나 의미를 전하기 쉬운 단어를 대신 선택했다. 하지만 쏟아져 들어오는 외국어에 대한 우리말 단어 선택은 내 능력의 부족에서 오는 안타까움을 넘어선다. 예를 들어 Supervisor는 이미 '슈퍼바이저, 수퍼바이저, 감독, 관리자, 감독자, 감리자, 감시자' 등으로 여러 분야에서 번역돼 통용되고 있으며, 실제로 사용할 한 단어의 선택에 충분한 일관성과 원칙을 찾는 것은 더욱더 어려운 일이 됐다. 이렇게 실제 의미를 알면서도 적당한 우리말 하나를 선택하는 어려움은 장마다 반복됐다. 표준 용어라도 전문가가 쓰지 않는 단어보다는 가급적 실제로 사용되는 용어를 선택하는 것이 독자에게 도움이 될 것이라 생각했다. 결과적으로 최선이 아닌 표현이 있더라도 이런 현실을 감안한 독자의 양해를 구한다.

도커, 쿠버네티스, 테라폼으로 구현하는 마이크로서비스

정보기술도 기존의 농업, 제조업 분야와 마찬가지로 오랜 세월의 기술이 축적된 필수적인 산업이다. 정보기술이 모든 산업에 영향을 주고 있지만, 다른 분야에서 혁명을 가져온 방법들을 정보기술에 적용하기도 한다. 그중 하나인 마이크로서비스는 특히 생산성에 관한 혁명이다. 이 책에서는 하나의 거대하고 복잡한 시스템이 정말 더 효율적인지 시스템을 설계, 개발, 테스트, 배포, 운영하는 모든 과정에서 독자에게 질문을 던지고 있다. 지금은 정보기술과 무관한 기업을 찾기는 어렵고, 30년 전에 개발한 프로그램과 설계 기술을 사용하고 있는 기업을 찾기는 쉽다. 큰 기업일수록 정보 인프라 안에 다양한 시대가 공존한다. 지난 세기를 대표하는 IBM 메인프레임 앱과 90년대 후반부터 흔했던 클라이언트 서버 기반 앱, 최근의 클라우드 기반의 앱까지 다양한 유행에 따른 시간이 공존한다. 한 가지 흥미로운 것은 과거 메인프레임 개발자라면 오히려 마이크로서비스의 설계, 개발, 배포의 과정과 개념이 전혀 낯설지 않다는 점이다. 긴 세월을 지나 유행이 다시 돌아온 것이 신기하면서도 반갑다. 하지만 이 느낌을 몰라도 상관없다. 여기서 마이크로서비스 때문에 등장하는 용어와 개념에 클라우드의 뛰어난 유연성과 확장성을 더해서 새롭게 배워 나가면 된다. 기존의 정보 시스템에 익숙한 전문가도 새로운 변화를 이해하고 도전하려면 많은 노력이 필요하다. 예를 들어 실제 윈도우 서버를 사용하는 경우에 HTTP 요청이 들어오면, 서버 운영체제의 커널 드라이버가 바로 처리해 응답을 반환하고 끝낼 수도 있다. 반면에 이 책 예제에서 HTTP 요청은 운영체제를 거쳐 가상 컴퓨터 관리자에 전달되고, 다시 가상 운영체제가 받아 Node.js에게 전달하면, HTTP 처리기가 결국 HTTP 응답을 반환한다. 그것도 모자라 다른 마이크로서비스와 통신을 위해 위 과정을 DNS부터 다시 밟아 나가기도 한다. 심지어 이미 읽은 파일의 메모리 캐시나, 프로세서가 실행할 수 있도록 컴파일해둔 스크립트 템플릿의 재사용에 대한 고민도 없이 가용성을 위해 재시작하기도 한다. 이해하기 힘든 것보다는 용서하기 힘든 구조를 받아들이는 노력이 필요해 보인다. 하지만 이런 불편함이나 오해는 공부할 대상의 정체가 무엇인지 끝까지 살펴보게 만드는 추진력이 될 수 있어 오히려 좋은 출발점이다. 새로운 개념이나 기술의 도입도 결국은 기존의 시스템을 잘 이해하는 사람들이 주도할 수 있다. 이상은 마이크로서비스 빼고는 이미 알만큼 아는 독자를 향한 응원이다. "항만 노동자, 조타수, 사람이 살 수 있는 행성을 만드는 방법으로 미세한 기능 지원 사업 시작하기" - 이 책의 영문 제목(Bootstrapping Microservices with Docker, Kubernetes, and Terraform)을 각 단어 본래의 일반적인 의미로 번역해봤다. 실제 의미를 전달하지 못하니 무의미하지만, 한편으로는 일상에서 사용하는 단어에 의미를 부여해서 사용하는 언어권에서는 조금 더 기술적인 이해가 쉽겠다는 생각이 든다. 번역은 다른 언어권에서 사용하는 의미를 최대한 잘 옮기려는 노력이다. 번역하면서 적당한 우리말 단어의 선택에 많은 고민이 있었고, 의미를 정확하게 전달할 수 있거나 실제로 이 분야에서 사용하는 단어를 우선적으로 선택하려고 노력했다. 결과적으로 최선의 선택이 아닌 표현이 있더라도 독자의 양해를 구하고 싶다.

아파치 카프카 쿡북

먼저 기업용 메시징 시스템 분야에서 겪은 경험이 풍부한 독자에게는 카프카를 포함한 다양하고 새로운 기술에 두려움을 갖지 말라는 메시지를 전하고 싶다. 이 책에 등장하는 메시지와 스트림을 처리하기 위해 사용하는 수많은 기술과 용어는 전혀 새로운 것이 아니다. 기존 용어가 조금씩 사라지고, 변화에 맞춰 기존 기술이 새 이름으로 대체된 것이다. 카프카는 약 15년 전부터 있던 메시징 시스템 개념에 여전히 충실하다. 새로운 도전이라는 긴 여정을 앞두고 있는 독자에게는 책의 어느 한 부분에 얽매이지 말라고 전하고 싶다. 분명 기업용 메시징 시스템은 어려운 주제다. 저자가 더욱 자세히 설명할 수도 있었겠지만, 광범위한 지식을 더 쉽고 자세하게 다루기는 어려웠을 것이다. 예를 들어 객체나 오브젝트를 말하면 다양한 속성을 가진 물건을 떠올리는 사람도 있을 것이고, 프로그램을 처음 배운 이는 클래스를 떠올릴 수도 있고, 숙련된 개발자 중에는 직접 만든 라이브러리를 머리에 그릴 수도 있다. 이렇게 사람들은 용어를 각자 다른 형태로 받아들인다. 처음부터 어떤 용어가 실제로 의미하는 모습으로 완벽하게 소화되기는 어렵지만, 여러 번 실습하고 그 결과를 전체적으로 보면 추상적인 단어도 결국 설명조차 필요 없는 개념이 된다.

아파치 카프카로 데이터 스트리밍 애플리케이션 제작

먼저 경험이 풍부한 독자에게는 카프카를 포함한 다양하고 새로운 기술에 대해 두려움을 갖지 말라는 메시지를 전하고 싶다. 이 책에 등장하는 메시지와 스트림을 처리하기 위한 수많은 기술과 용어는 전혀 새로운 것은 아니며, 기존 용어가 조금 사라지고, 변화에 따라 기존 기술이 새 이름으로 대체된 것이다. 카프카는 약 15년 전부터 이미 있던 메시징 시스템 개념에 여전히 충실하다. 새로운 도전의 긴 여정을 앞두고 있는 독자에게는 책의 어느 한 부분에 얽매이지 말라고 전하고 싶다. 분명 기업용 메시징 시스템은 어려운 주제다. 저자의 입장에서도 자세히 설명할 수 있겠지만, 광범위한 지식을 더 쉽고 자세하게 담기는 어려웠을 것이다. 예를 들어 누군가에게 객체나 오브젝트를 말하면 다양한 속성을 가진 물건을 떠올릴 수도 있고, 프로그램을 처음 배운 이는 클래스를 떠올리기도 하고, 숙련된 개발자 중에는 직접 만든 라이브러리를 머릿속에 그릴 수도 있다. 이렇게 사람들은 용어를 각자 다른 형태로 받아들인다. 처음부터 어떤 용어가 실제로 의미하는 모습으로 완벽하게 소화되기는 어렵지만, 여러 번 실습하고 그 결과를 전체적으로 보는 과정에서는 결국 추상적인 단어도 설명조차 필요 없는 분명한 개념이 된다.

쿠버네티스로 구현하는 머신러닝

머신러닝(Machine Learning)이 다시 유행하고 있다. 각 기업은 머신러닝을 채택하고 기능을 향상시켜 새로운 제품을 만들거나 고객 응대 능력을 개선한다. 이 책의 주제는 머신러닝의 갖가지 장점을 통해 기업이나 팀에서 사업적 가치를 얻어낼 수 있도록 돕는 것이다. MLOps를 쿠버네티스(Kubernates)로 구현해 데이터 과학자와 IT 운영 전문가 그리고 데이터 엔지니어가 협업해 업무에 실제로 도움이 되는 머신러닝 솔루션을 만들 수 있을 것이다. 이 책은 머신러닝 프로젝트 전반에 걸쳐서 소프트웨어 공학적인 규칙을 가지고 팀이 협업할 수 있도록 실용적인 접근을 시도한다. 먼저 MLOps가 왜 중요하고, 머신러닝 프로젝트 구성 요소의 차이점이 무엇인지 알아보는 것으로 시작할 것이다. 이 책의 후반부에는 가장 인기 있는 OSS(Open Source Software) 구성 요소를 사용해 실용적인 머신러닝 프로젝트를 전체적으로 설계하고 제작해볼 것이다. 이 책을 따라가면서 MLOps의 기본과 머신러닝 프로젝트가 제공하는 장점에 더 익숙해질 것이고, 오픈소스와 쿠버네티스 클러스터로 구성된 머신러닝 플랫폼을 만들어 설정하고, 사용해보는 경험을 얻을 것이다. 결국 데이터를 어떻게 준비하고, 모델을 빠르게 빌드해 배포하고, 일반적인 플랫폼에서 효율적으로 머신러닝 파이프라인을 구성하기 위한 작업을 자동화하는 방법을 배울 것이다. 이 책의 예제를 통해 쿠버네티스를 기반으로 주피터허브(JupyterHub), MLflow, Airflow 등의 OSS와 통합하는 실습을 해볼 것이다. 이 책을 마치고 나면 직접 제작한 머신러닝 플랫폼으로 머신러닝 모델을 효과적으로 제작해 학습, 배포할 수 있을 것이다.

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