[IT] 게임 전쟁

2023. 4. 21. 12:20 | Posted by 꿈꾸는코난

< 게임 전쟁 > | 스티븐 켄트 지음 | 심백선 옮김 | 한빛미디어

 

게임을 즐겨하지 않고 따라서 콘솔 게임을 제대로 해 본적은 없지만 적어도 소니나 닌텐도, 마이크로소프트의 게임 콘솔 이름이 무엇인지 정도는 알고 있다. 아마도 나처럼 게임을 잘 모르더라도 대부분의 사람들이 이름 정도는 알고 있을 것이라고 생각한다. 그만큼 이 세 회사가 게임 콘솔 시장에서 얼마나 큰 인지도를 가지고 있는지 알게 해주는 척도라고 할 수 있지 않을까 싶다.

이 책은 소니, 닌텐도, 마이크로소프트가 게임의 진화와 새로운 콘솔을 탄생시킨 경쟁의 역사를 모두 담고 있다. 분명 한때는 게임이 아이들의 시간을 빼앗고 중독을 야기시키는 놀이라고 여겨졌지만 지금은 하나의 산업으로써, 그리고 문화로서 받아들여지고 있다. 이에 따라 많은 게임업체들이 주도권을 잡기 위한 무한한 경쟁에 들어가게 되었다. 저자는 시애틀 타임스의 프리랜스 기자로서 비디오 게임을 취재한 것을 시작으로 다양한 매체에 글을 기고해 왔었다. 게임 산업 전반에 대한 역사적인 변화가 이루어지는 시점마다 가장 가까이에서 그 현장을 지켜봐 왔으며 그 중에서 콘솔의 탄생과 이에 따른 기업들의 다양한 전략이 이 책 속에 녹아들어있다.

각 회사가 경쟁에서 살아남기 위해, 그리고 궁금적으로 시장을 점유하기 위해 부단히 노력하는 모습을 확인할 수 있다. 콘솔 하드웨어 개발 과정에서의 다양한 시행착오들, 그리고 콘솔에 맞는 게임을 출시하기 위해 서로 연합했다가 다시 에어지는 과정을 통해 그 상황에 맞는 의사결정이 얼마나 힘들었을지 잘 느껴지곤 했다. 나중에 시장에서 인정을 받았을 때는 그 동안의 어려움이 지난 이야기가 되겠지만 그 과정중에 있을 때는 순간의 선택이 사업 자체에 대한 몰락으로 이어질 수 있기 때문에 숨막히는 순간 순간이 아니었을까 싶다.

전반적으로 내용의 전개는 상황을 설명하고 관련된 인터뷰 기사 등을 통해 사실 관계를 보여주고 있다. 이러한 구조때문인지 모르겠지만 기대했던 것 보다는 내용의 전개가 딱딱하다는 느낌이 많이 든다. 하지만 다른 측면으로 본다면 그만큼 사실에 기반한 내용이 계속 서술된다고 볼 수도 있을 것 같다. 주요 세 업체가 어떻게 서로 경쟁을 하며 콘솔 시장을 이끌어 나가고자 했는지 잘 보여주는 이 책은 게임에 관심이 있는 사람이라면 누구나 게임에 대한 새로운 면모를 느끼게 해 줄 것이라고 생각한다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 소프트웨어 아키텍처 The Hard Parts

2023. 3. 22. 16:19 | Posted by 꿈꾸는코난

< 소프트웨어 아키텍처 The Hard Parts > | 닐 포드 외 3인 지음  | 이일웅 옮김 | 한빛미디어

 

이 책은 분산 아키텍처를 구축할 때 아키텍트가 트레이드오프를 객관적으로 분석하여 의사 결정을 내리기까지의 전 과정을 상세히 설명한다. 그렇다면 소프트웨어 아키텍처를 이야기하면서 Hard parts를 언급한 이유는 무엇일까? 이 책에서 hard는 어렵다라는 의미와 단단하다는 의미를 내포하고 있다. 즉 소프트웨어 아키텍처, 특히 분산 아키텍처는 일반적인 방법론이나 모범 사례가 존재하지 않는다. 따라서 모든 분산 아키텍처는 각각 유일한 사례가 되는 경우가 많다. 그만큼 어렵다는 의미라고 볼 수 있다. 한편으로는 처음 설계가 잘못되어 구축이 되고 나면 그 상태로 단단하게 굳어져 다시 고치는 작업이 어렵다는 의미도 있다.

소프트웨어 아키텍처에 대해 소개하는 많은 책들은 대부분 이론적인 사례를 많이 다룬다. 따라서 개념적인 부분은 이해하지만 실제 필드에서 적용하기 위해서는 또 다른 고민이 필요한 것이 사실이다. 이 책은 그런 면에서 현실적인 도움을 주는 책이라고 볼 수 있다. IT 서적이지만 책을 읽고 이해하는 데 별 어려움이 없을 정도로 글이 매끄럽고 번역이 잘 되어 있는 것 같다. 또한 가상의 시스템을 사례로 들어 분산 아키텍처를 구성해 가면서 발생하는 다양한 트레이드오프와 접근 방법, 그리고 문제점에 대해 설명한다. 또한 문제점을 해결하기 위한 구체적인 방안을 자연스럽게 이어가고 있어서 실제 업무를 진행하는 것과 유사한 느낌을 가지게 한다.

책은 크게 2개의 파트로 구성되어 있다. 파트 1은 따로 떼어놓기이다. 분산 아키텍에서 트레이드오프를 분석하기 위해 아키텍처를 하나씩 떼어내어 완전히 이해하는 과정이 필요하다. 아키텍처 구조 측면에서 각 요소가 정적으로 결합되는 방식을 설명하고, 아키텍터의 정적 커플링과 동적 커플링의 범위를 정의하면서 이를 분해하면서 생기는 문제를 살펴본다. 그리고 이를 바탕으로 실제 분해 프로세스를 시작하고 코드 베이스를 평가하고 해체하는 도구를 알아보고, 이를 위해 사용할 수 있는 다양한 패턴을 설명한다. 또한 분산 아키텍처에서 데이타와 트랜젝션의 중요성이 점점 커지고 있음에 따라 이를 위한 다양한 주제에 대해 언급한다.

파트 2는 다시 합치기이다. 시스템을 분해해 놓고 나면 곧 시스템을 다시 합쳐 하나의 응집된 단위로 작동시켜야 할 필요성을 느끼게 된다. 이 측면에서 서비스 통신, 계약 분산, 분산 워크플로, 분산 트랜젝션, 데이터 오너십, 데이터 액세스, 분석 데이터 관리 등 다양한 어려운 난제를 극복하는데 필요한 기술을 설명한다.

책에서 설명되는 개념 하나 하나가 실제 업무에 도움이 되는 유용한 정보를 포함하고 있다. 기술은 지속적으로 발전하고 변화하는 현 환경에서 가상의 실 사례를 들어 분산 아키텍처를 분해하고 결합하는 과정을 살펴 봄으로 현실적인 조언과 더불어 각자의 시스템에 활용할 수 있는 소중한 정보를 얻을 수 있는 책이라고 생각한다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 우리가 사랑한 한국 PC 게임

2023. 2. 16. 14:14 | Posted by 꿈꾸는코난

< 우리가 사랑한 한국 PC 게임 > | 장세용,오영욱,조기현 지음 | 한빛미디어

 

현재 게임 산업은 다른 산업 못지 않게 큰 각광을 받고 있다. 게임 업체 자체에 대한 명암은 차지하고 게임 자체만으로 본다면 항상 많은 사람들의 관심과 호기심을 받아 온 것 같다. 그렇다면 우리나라 PC 게임은 언제 나타나고 사라졌을까? 현재를 돌이켜 보면 대부분 온라인게임이 주를 이루고 있어서 PC 게임은 거의 찾아볼 수 없는 것 같다.

이 책은 1990년대 초반부터 2000년대 초반까지 우리나라에서 제작된 다양한 PC 게임들을 시기별로 다루고 있다. 이미 30년도 지난 게임이지만 게임 패키지 사진과 실제 게임 속 화면 일부를 보여줌으로써 그 시절의 기억을 돌이켜 보게 하고 그 게임이 만들어지던 과정 및 게이머들의 관심이 어떠했는지를 엿볼 수 있다.

사실 게임에 관심이 없지는 않지만 다양한 게임을 접하지는 못했다. 이 책을 보면서 내가 아는 게임이 얼마나 있는지 세어보았는데 세어볼 필요도 없다는 것을 알게 되었다. 나름 게임에 관심이 없지 않다고는 했지만 이름을 아는 게임이 하나도 없다는 놀라운 사실이다. 생각해 보니 국산 게임보다는 외국에서 넘어온 게임을 가끔씩 했었던 것 같다.

하지만 게임을 개발했거나 개발하고 있는 사람들, 그리고 게임을 다양하게 해본 경험이 있는 사람이라면 이 책의 존재가 아주 반갑게 느껴질 것이라고 생각된다. 옛날의 추억도 되살리고 게임에 대한 공감도 하면서 향수에 젖어들 수 있을 것 같다고 생각된다.

다른 한편으로 오래전 출시되고 사라진 게임에 대한 정보를 수집하고 정리한 노력은 가히 으뜸이라고 말하고 싶다. 어느 한곳에 모아져 있는 것도 아니기에 수소문을 통해 게임에 관련된 자료를 수집하고 편집하는 과정이 얼마나 어려웠을까 생각해 본다. 하지만 그 과정도 나름  흥미와 재미를 주는 과정일 수도 있다는 생각이 든다.

솔직히 이 책을 읽으면서 더 눈에 들어왔던 부분은 게임 주요 사양에 대한 변화였던 것 같다. IBM PC/XT/AT, 기본 메모리 640KB, 허큘리스, 옥소리, VGA, 5.25'' 플로피 디스크 등 PC 환경이 급변하던 시기에 새롭게 나타나고 사라진 다양한 그래픽 및 오디오 카드, 그리고 미디어의 변천사를 눈여겨 보는 재미도 있었던 것 같다. 어느순간 기본 메모리가 GB 단위로 넘어가고 미디어도 CD-ROM으로, 그래픽 및 VGA 카드도 점점 고사양으로 변화하는 모습을 볼 수 있었다.

시대별 한국 PC 게임의 역사를 되돌아 볼 수 있어서 좋았던 것 같다. 비록 게임을 즐겨하지는 않았지만 그 시대를 살았던 사람으로서 그 추억에 젖어들 수 있는 계기가 된 것 같다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

'꿈꾸는 책들의 도시' 카테고리의 다른 글

[인문] 만화로 보는 일리아스  (0) 2023.02.27
[시] 보고 시픈 당신에게  (0) 2023.02.17
[경영] 실리콘밸리의 실험실  (0) 2023.02.15
[에세이] 엄마와 물건  (0) 2023.02.11
[경제] AI 2041  (0) 2023.02.03

[IT] 전문가를 위한 C

2022. 10. 27. 09:57 | Posted by 꿈꾸는코난

< 전문가를 위한 C > | 캄란 아미니 지음 | 박지윤 옮김 | 한빛미디어

 

초반 개발을 시작할때는 대부분 C 언어를 사용하곤 했다. 처음 개발을 시작한 환경탓도 있겠지만 어느 정도 개발업무를 한다는 사람은 대부분 C 언어에 대한 지식을 기본으로 가지고 있었던 것 같다. 그만큼 개발 언어에 대한 서적도 C 언어에 대한 문법이나 고급 스킬을 소개하는 서적이 많았던 것으로 기억한다. 하지만 시간이 흐름에 따라 C 언어보다는 Java나 python 등과 같은 언어가 대세를 이루고 있는 것 같다.

이런 분위기에서 <전문가를 위한 C>는 오랜만에 보는 깊이있는 C 언어 서적이라고 생각한다. 이미 기초 문법은 알고 있다고 가정하고 개발 환경 및 다양한 개념에 대해 소개하고 있다. 특히 C 언어에서 필수적으로 알아야 하는 메모리 구조 및 스택, 힙에 대한 개념을 상세히 설명하고 있기 떄문에 어느정도 기초를 알고 있는 개발자에게는 개념을 잡는데 많은 도움이 되지 않을까 생각이 들었다. 이뿐만 아니라 C 언어의 기반이 된 유닉스의 역사 및 아키텍처, 시스템 호출과 커널 등에 대한 소개를 통해 C 언어가 탄생하게 된 배경과 low level 언어로서의 C 언어를 이해할 수 있다.

C 언어는 오랜 역사를 가진만큼 다양한 분야에서 많이 사용되고 있다. 특히 임베디스 시스템이나 고성능 시스템 개발에 최적화된 언어라고 볼 수 있으며 시스템의 하드웨어를 어느정도 직접 컨트롤할 수 있다는 면에서 소프트웨어 엔지니어링 등에서 핵심 언어로 자리매김하고 있다. 요즘 세부 하드웨적인 지식이 없더라도 개발할 수 있는 언어가 다양하게 나와있다. 하지만 하드웨어적인 시스템을 알고 개발하는 것과 아닌 것과의 차이는 상당히 크다고 볼 수 있다. 그런 측면에서 C 언어로 개발을 할 수 있는 개발자가 다른 언어를 사용해서 개발하는 것과 전혀 모르고 개발하는 사람과의 차이도 그만큼 크다고 볼 수 있을 것 같다.

이 책은 C 언어와 컴퓨터의 역사, 객체지향(이 부분이 추가된 것에 대해서는 좀 의문이다), 커널, 프로세스 등 다양한 주제를 가지고 설명한다. 그리고 각 설명마다 다양한 예시가 제시되어 있어서 실제 각자의 환경에서 컴파일하고 실행해 볼 수 있기 때문에 직접 눈으로 보고 그 결과를 확인할 수 있다. 하지만 프로그래밍 언어를 전혀 모르는 사람이 이 책을 통해 C 언어를 배우기는 쉽지 않을 것이다. 이 책의 서두에도 언급하듯이 이 책을 읽기 위한 최소한의 요구사항을 제시한다: 컴퓨터 아키텍처 지식, 프로그래밍 기초 지식, 터미널과 쉘 명령어 사용법, 프로그래밍 중급 지식, 객체 지향 프로그래밍 기초 지식이 그것이다. 적어도 최소한의 요구사항에 대한 용어를 들어보거나 경험한 적이 있어야 이 책이 설명하는 내용을 제대로 따라갈 수 있으리라 생각한다.

편의성 측면을 본다면 개발자가 리소스와 프로세스 스케줄링에 크게 신경쓰지 않고 원하는 기능을 개발할 수 있으면 좋을 것이다. 하지만 그렇게 되기 위해서는 또 다른 개발자가 리소스와 프로세스 스케줄링을 자동으로 잘 제공할 수 있는 기능이 개발되어야 할 것이다. 누군가가 편하게 사용하기 위해서는 누군가는 그 기반이 되는 구조와 환경을 제대로 구현하고 있어야 한다(예를 들어 개발자가 시스템적인 고민을 별로 안해도 되는 python의 경우 내부는 C로 구현되어 있다).

C 언어가 가지고 있는 장점은 다른 언어에 비해서 월등한 것 같다. 그만큼 개발자가 신경써야 하는 것이 많긴 하지만 그만큼 원하는 방향대로 디테일하게 제어할 수 있다는 것이기도 한다. 이 책은 이런 개발자를 위해 C 언어에 대한 깊이있는 지식을 전달해 준다. 개념을 배우고 실제 컴파일해서 경험하는 과정을 통해 그 지식을 한층 높일 수 있다고 생각한다. 그리고 한층 높은 단계로 올라갈 수 있는 사다리가 되지 않을까 생각한다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 데이터로 전문가처럼 말하기

2022. 9. 27. 18:06 | Posted by 꿈꾸는코난

< 데이터로 전문가처럼 말하기 > | 칼 올친 지음 | 이한호 옮김 | 한빛미디어

 

현대는 데이터의 시대라고 해도 무방할 정도로 많은 데이터가 생성되고 관리되고 있다. 하지만 무조건 많은 데이타를 생성하고 저장만하는 것은 큰 의미가 없을 것이다. 저장된 데이터를 제대로 분석하고 이를 효율적으로 표현하는 것이 더 중요한 시기가 되었다. 물론 많은 사람들이 엑셀이나 파워포인트 등으로 다양한 표와 차트를 통해 데이터를 표현하고 있다. 하지만 더 중요한 부분은 표와 차트를 구성하는 세부 요소 및 의미에 대해 좀 더 명확히 이해하는 것이다. 화려하게 표현하는 것이 중요한 것이 아니라 제대로 표현할 방법과 요소를 이용하는 것이 더 중요하다는 의미로 볼 수 있다.

이런 측면에서 이 책은 기존 데이터를 분석하고 어떻게 표현하는 것이 좋은지에 대한 가이드를 제시해 준다. 특히 데이터 기반 커뮤니케이션을 통해 의사결정에 영향을 미치고 조직의 목표를 달성하는 방법을 알려준다. 또한 데이터를 다룰 때 중요한 부분을 제시하고 이를 실무에 적용하여 곤란한 상황을 쉽게 극복할 수 있도록 하는 방법을 제시한다. 이를 위해 특정 툴에 대한 설명보다는 기초적인 데이터 작업 능력 배양과 언제, 어떻게, 어디에 데이터를 사용할 수 있는지에 대한 가이드를 제공한다.

 

이 책은 크게 3부분으로 구성되어 있다. 1부에서는 커뮤니케이션과 데이터를, 2부에서는 데이터 시각화 요소를, 3부에서는 실무에서 데이터 커뮤니케이션을 활용하는 방법에 대해 설명한다. 데이터에 대한 언급을 하면서 커뮤니케이션이 나와서 조금 어리둥절할 수도 있다. 하지만 데이터를 분석하여 시각화한다는 것은 누군가에서 그 내용을 보여주거나 설명하는 과정이다. 이는 자신이 만든 데이터를 통해 다른 사람과 커뮤니케이션하는 것을 의미하며, 또한 상대방인 원하는 것을 제공해 줄 수 있어야 한다는 것이다. 이를 위해서는 커뮤니케이션의 개념을 이해하고 어떻게 표현해야 하는지를 이해하는 것이 꼭 필요하다고 볼 수 있다.

 


1부에서는 주로 커뮤니케이션에 대한 개념과 데이터에 대한 개념 및 데이터의 형식, 그리고 올바른 데이터가 무엇인지에 대해 설명한다. 1부를 통해 이 책이 설명하고자 하는 시각화가 필요한 기본 개념을 알 수 있게 된다. 2부에서는 본격적으로 데이터 시각화 요소에 대해 설명한다. 다양한 형태로 데이터를 표현하는 방법과 다양한 데이타를 표현하는 개념에 대해 소개한다. 또한 시각적 요소로서 색깔과 크기, 참조선 등에 대해 언급을 하며, 제목, 텍스트, 범례, 도해 등 우리가 일상적으로 사용하는 개념을 제대로 사용할 수 있도록 한다.  3부에서는 효과적으로 데이터 기반 커뮤니케이션을 할 수 있는 전략에 대해 소개하며 특히 주로 사용하는 표 및 그림, 정적인 표현 및 동적인 표현, 중앙 집중형 및 분산형 데이터형 등 전략적으로 어떤 표현법을 사용해야 하는지 언급한다. 최종적으로 부서별 목적에 맞도록 데이터를 어떻게 가공하고 표현해야 하는지 설명하면서 마무리된다.

데이터 시각화에 대한 자료 및 책이 다양하게 나와 있는 것 같다. 하지만 이 책만큼 이해하기 쉬우면서도 개념을 정확히 잡을 수 있는 자료나 책은 흔치 않는 것 같다. 주로 내, 외부에서 발표를 하는 업무를 담당하지 않더라도 자신이 가지고 있는 데이터를 효율적으로 표현하고 다른 사람을 좀 더 잘 설득하고자 한다면 이 책을 꼭 한번 읽어보면 좋을 것 같다는 생각이 든다.



"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 피, 땀, 리셋

2022. 8. 16. 14:26 | Posted by 꿈꾸는코난

< 피, 땀, 리셋 > | 제이슨 슈라이어 지음 | 권혜정 옮김 | 한빛미디어

 

IT쪽 일을 하고 있다보니 다양한 분야에 대한 기사나 내용을 종종 접하게 된다. 성장가도를달리는 유명 업체에 대한 내용도 많지만 그에 못지 않게 게임업체에 대한 이야기도 종종 언급되는 것 같다. 특히 게임업체에 만연한 살인적인 근무환경, 그리고 고용안정성 등 특히 타 IT 업종보다 문제가 많은 듯한 느낌을 받았다. 이러한 내용을 보면서 여전히 게임업계는 예전의 근무환경에서 벗어나지 못했다는 생각이 들고(물론 일반 IT 업종도 비슷한 경우가 있지만 업종을 통틀어 그렇게 심각하지는 않는 것 같다) 왜 우리나라에서만 이런 행태가 계속적으로 유지되는 것인지 의문점이 들었다.

이 책은 내가 가진 이런 의문점을 한번에 (슬프게) 날려주는 내용을 포함하고 있다. 성공 가도를 달리는 게임 산업 속 가려져 있던 이름없는 영웅들의 삶이라는 주제를 가지고 있다. 게임을 잘 하지 않아서 그런지, 실제 이름없는 영웅이라서 그런지 모르겠지만 책에 나오는 인물들의 이름 중에서 아는 사람이 거의 없었던 것 같다. 물론 게임 업체도 대부분 생소한 업체들이 었다. 하지만 게임업체 속 근무 형태나 게임이 개발 되는 현장의 모습, 그리고 게임이 개발된 후 배포시 기업간의 관계 등은 우리나라 현실과 꼭 닯아 있다는 생각이 들었다. 게임업체에 만연한 크런치모드, 개발된 게임이 흥행에 실패했을 때 개발 업체에 소속된 개발자들의 해고, 지금은 좀 다르겠지만 게임 유통사의 갑질(?) 등 우리나라와 별반 다를 것 없는 환경을 잘 볼 수 있었다.

<피, 땀, 리셋>은 저자의 전작 <피, 땀, 픽셀>에서 게임을 성공적으로 완성하는 모습을 그려낸 것에 반해 피땀 어린 게임과 회사가 제대로 출시되기도 전에, 또는 시장에서 인정받기도 전에 날아가 버리는 이야기를 다루고 있다. 이 책은 총 9장에 걸쳐 다양한 인물과 게임 개발 과정, 그리고 폐업에 대한 이야기를 풀어놓는다. 다양한 인물과 개발업체가 나오지만 자세히 보면 서로 핵심 인물과 핵심 업체를 고리로  서로 연결되어 있다는 것을 잘 알 수 있었다. 또한 개발자와 무관하게 게임이 개발되는 혹독한 현실과 한순간에 몸담았던 업체가 사라지거나 일부가 해고되는 현실을 잘 그려내고 있다. 문제는 이 과정이 상식적이지 않게 이루어진다는 것이고 더 큰 문제는 이러한 현실이 개선되지 않고 이어진다는 것이다.

 


이 책에서는 다양한 질문을 제시한다. 게임 업체에서는 왜 직업 안정성을 유지하기 어려운가, 정리해고 및 제작사 폐업이 끊임없이 이어지는가, 게임 개발자의 삶과 다음 행보는 어떻게 이어지는가 등 게임 업체와 게임 개발자에 대한 다양한 모습을 제시하고 있다. 물론 이 책의 주된 내용은 게임 제작사가 망했을 때 일어나는 다양한 일들을 설명해주고 있으며, 그 속에서 개발자들이 자신의 삶을 어떻게 이어가는지(타 업체 이직, 업종 전환 등)를 잘 보여주고 있다는 생각이 들었다.

 


이런 상황속에서도 한줄기 희망적인 내용은 포함되어 있다. 해고되거나 회사가 망한 개발자는 다양한 선택에 빠지게 된다. 자신이 직접 개발사를 만들어서 원하는 게임을 개발할 수도 있고, 다른 곳에 가서 취업한 후 게임 개발을 계속 할 수도 있고, 안정적인 새로운 일자리를 찾을 수도 있다. 마치 게임을 하는 동안 원하지 않는 방향으로 게임이 진행될 때 리셋을 누르고 게임을 다시 시작하거나 끝까지 게임을 이어나가는 것과 유사한 것 같다. 물론 아예 게임을 끄고 그 게임을 하지 않는 것도 선택 중의 하나일 것이다. 하지만 한가지 차이느, 인생은 리셋을 한다고 해도 모든 것이 초기화되지 않는다는 것이다. 리셋하기 전까지 본인이 경험한 다양한 경험치를 기반으로 다시 시작할 수도, 새로운 일을 시작할 수도 있다는 점이다. 

게임업계의 현실을 좀 더 적나라하게 볼 수 있는 계기가 된 것 같다. 우리나라뿐만 아니라 다른 나라도 게임업계의 현실을 비슷하다는 느낌이 들었다. 또한 그 업계에서 일하는 개발자들은 나름 자부심과 열정을 가지고 노력하고 있다는 생각도 든다. 코로나19 환경에서 게임업체가 유래없는 호황을 누리고 있는 것 같다. 하지만 실제 개발업체의 환경은 얼마나 개선되었는지는 의문이다. 게임을 하는 게이머들에게 즐거움을 주는 것처럼 게임개발업체에 소속된 인원들도 즐겁게 게임을 개발할 수 있는 여건을 마련하는 것이 필요한 것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

< 똑똑한 코드 작성을 위한 실전 알고리즘 > | 조이 하이네만 지음

| 윤대석 옮김 | 한빛미디어

 

개발을 하는 사람이라면 어느 시점부터 알고리즘에 관심을 가지게 되는 것 같다. 어느 순간 자신이 주먹구구식으로 개발을 해 왔다는 것을 느낄때 쯤 알고리즘을 익히면서 보다 깔끔하고 빠른 알고리즘을 적용하는 것에 신경을 많이 쓰는 것 같다. 하지만 시중에 다양한 알고리즘 관련 책들이 나와 있긴 하지만 대부분 개념적인 설명에 머물고 있는 것 같다. 그렇지 않다면 알고리즘이 psedo 알고리즘으로 되어 있어서 제대로 분석하기 어려운 경우도 많은 것 같다.

이 책은 그런 면에서 다른 책들과는 차이점을 보이는 것 같다. 일단 복잡한 수식이나 개념을 글보다는 그림과 예제로 설명한다. 또한 설명하고자 하는 알고리즘도 python 코드로 되어 있어서 python에 어느정도 익숙한 사람이라면 보다 쉽게 알고리즘을 이해할 수 있는 것 같다.  이 책을 접하는 사람은 적어도 프로그래밍을 조금이라도 해 본 사람일 것이다. 전혀 프로그래밍을 해보지 않은 사람이 이런 종류의 책에 크게 관심을 가지지는 않을 것 같다. 다만 이 책에서 설명하는 알고리즘을 좀 더 잘 이해하기 위해서는 어느정도 python 언어에 대한 경험이 있는 것이 좋을 것 같다는 생각이 든다.

책의 시작은 알고리즘에 대한 개념부터 시작한다. 한마디로 알고리즘은 예측 가능한 시간에 정확한 결과를 반화하는, 컴퓨터 프로그램으로 구현된 단계별 문제 해결 방법이라고 볼 수 있다. 여기서 중요한 키워드는 예측 가능한 시간과 정확한 결과, 단계별 문제 해결 방법인 것 같다. 알고리즘에 대해 설명하면서 다양한 문제 해결에 대한 예시를 1장에서 설명한다. 특히 시간 복잡도와 공간 복잡도에 대한 부분을 제대로 이해하고 넘어가야 할 부분이다. 2장에서는 알고리즘 분석에 대해 다룬다. 빅오 표현법을 사용해 알고리즘 성능을 분류하는 방법과 다양한 성능 등급에 대해 설명하고, 정렬 알고리즘을 통해 알고리즘 성능 분석 예를 제시하고 있다. 

3장부터는 실제 다양한 문제에 대한 알고리즘을 다룬다. 해싱, 힙, 정렬, 이진트리, 그래프 등 개발을 하다보면 적어도 한번쯤은 접하게 되는 영역에 대해 자세히 설명하고 있다. 이미 언급한 대로 각각의 알고리즘을 설명할때마다 그림과 예제가 있기 때문에 보다 직관적으로 알고리즘을 이해할 수 있는 것 같다.

 


이 책은 개발자가 본다면 가장 도움이 될만한 책이다. 하지만 전문 개발자가 아니더라도 프로그래밍 언어를 사용한 경험이 있는 사람이라면 이 책에서 언급하는 알고리즘을 어느정도 이해가능하다고 생각한다. 이를 통해 본인이 적용하고자 하는 영역에 알고리즘적인 개념을 추가해서 구현할 수 있지 않을까 생각한다. 알고리즘이란 개발자만의 영역이 아니라 어떤 문제를 해결하기 위한 논리적인 개념으로 볼 수 있을 것 같다. 즉 알고리즘의 개념 중  단계별 문제 해결 방법이 주된 요소 중의 하나라고 생각한다.  단계별 문제 해결 방법은 프로그래밍 언어로 구현할 수도 있고, 수식으로 표현할 수도 있고, 문장으로 표현할 수도 있을 것 같다. 이를 통해 문제 해결을 위한 단계를 차근차근 밟아가는 것이라고 생각한다. 이런 면에서 본다면 이 책은 문제 해결을 위한 알고리즘을 체계적으로 이해할 수 있도록 도와주는 유익한 책이라고 생각한다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 구글 엔지니어는 이렇게 일한다

2022. 5. 27. 13:51 | Posted by 꿈꾸는코난

< 구글 엔지니어는 이렇게 일한다 > | 타이터스 윈터스, 톰 맨쉬렉, 하이럼 라이트 큐레이션 |

개앞맵시 옮김 | 한빛미디어

 

우리나라 개발환경도 많이 개선되고 있는 것 같다. 예전 주먹구구식 개발환경에서 체계를 갖추고 개발문화와 시스템을 제대로 갖춘 회사가 많이 늘어나고 있다. 하지만 개발은 하나의 문화이고 경영진이든 관리자가 그 문화를 이해하지 못한다면 언제든 허물어질 수 있는 위험성을 안고 있다고 생각한다. 그리고 문화를 갖추지 못한 조직인 그 문화를 만들어 가는 과정도 오랜 시간이 필요한 작업으로 볼 수 있다. 문화라는 단어에서 엿볼 수 있듯이 누군가가  시작한다고 완성되는 것이 아니라 오랜 시간동안 그 조직에 녹아들고 서로 공감을 해야 완성되는 체계라고 볼 수 있다.

그러나 이러한 문화를 제대로 이해하기도 힘들지만 새로운 조직에서 접목하기도 어려운 것도 현실이다. 일단 이러한 문화에 대해 제대로 된 정보를 접하기도 어렵고 문서화된 자료를 구한다고 하더라도 실제 조직에 적용하는 것은 또 다른 문제라고 볼 수 있다. 이런 측면에서 이 책은 개발문화에 대한 이해와 이미 체계를 갖추고 조직에서 활용하고 있는 실제 사례를 접할 수 있다는 점에서 매우 유용한 자료를 제공한다고 볼 수 있다. 책의 분량만 봐도 간단히 소개하는 정도가 아님을 알 수 있다. 약 700여 페이지에 걸쳐 구글  엔지니어들이 일하는 방법을 소프트웨어 엔지니어링 관점에서 잘 소개하고 있다.

프로그래밍과 달리 소프트웨어 엔지니어링은 시간의 흐름에 발맞추어 한 조직이 코드를 구축하고 유지보수하는 데 이용하는 모든 도구와 프로세스를 포괄한 것이다. 즉 당장의 아웃풋이 아니라 향후 지속가능한 개발과 체계를 염두에 두고 다방면으로 고려한 것을 말하는 것이다. 소프트웨어 조직은 시간과 변경, 규모와 성장, 트레이드오프와 비용 등에 대한 기본 원칙을 지키면서 설계, 아키텍처 잡기, 코드 작성을 해야하는 것이다. 이 책은 크게 소프트웨어 엔지니어링에 대한 전제, 문화, 프로세스, 도구에 관련된 4개의 파트로 구분되어 있다. 그리고 각각의 파트에서 세부적인 주제를 다루고 있다.

파트 1에서는 소프트웨어 엔지니어링에 대한 개념 개념을 다룬다. 시간과 변경에 관련된 사항과 규모 확장 및 효율성에 대한 부분, 그리고 트레이드 오프와 비용에 대한 주제를 다루고 있다. 특히 소프트웨어 엔지니어링과 프로그래밍에 대한 관점과 차이점에 대해 자세히 설명한다. 파트 2에서는 문화에 대한 소개를 한다. 팀워크 및 지식 공유의 중요성 및 실제 사례, 팀을 이끌어 가는 방법과 성장하는 조직을 이끄는 방법, 그리고 생산성을 측정하는 방법까지 개발 문화에 관련된 전반적인 내용을 언급하고 있다.

파트 3에서는 프로세스에 대해 소개한다. 개인적으로 볼 때 가장 중요한 파트이지 않을까 생각한다. 스타일 가이드와 규칙의 중요성, 그리고 코드 리뷰를 통한 장점과 사례, 그리고 리뷰 유형을 설명한다. 또한 문서의 중요성과 다양한 작성 방법과 테스트에 대한 전반적인 내용을 다루고 있다. 파트 4에서는 도구를 다룬다. 버전 관리 및 브랜치 관리에 대한 도구와 방법을 보여주면서 빌드 시스템과 빌드 철학에 대해 잘 보여주고 있다. 또한 구글에서 사용하는 코드 리뷰 도구과 정적 분석 및 의존성 관리의 중요성에 대해 언급한다.

이 책은 각각의 파트, 또는 각 파트에 포함된 각각의 장이 독립적적으로 유용한 정보를 제공하고 있는 것 같다. 따라서 책의 내용을 처음부터 읽지 않더라도 본인이 꼭 필요로 하는 파트나 장만 읽어보더라도 많은 도움이 될 것 같다는 생각이 든다. 또한 개발 문화에 대한 지식이 없거나 경험하지 못한 상태라면 이 책을 통해 바람직한 개발 문화와 그 개발 문화를 만들어 가는 방법에 대한 좋은 가이드를 얻을 수 있을 것이라고 생각한다. 또한 이미 개발 문화가 갖춰져 있다고 하더라도 구글의 개발 문화를 접목해서 보다 개선된 개발 문화를 가질 수 있지 않을까 기대도 해 본다.

책의 내용을 방대하지만 그만큼 많은 유용한 정보를 담고 있다고 생각한다. 특히 구글이란 조직에서 실제로 적용해서 사용하고 있는 실제 사례이기 때문에 이론적으로만 치우친 다른 참고 자료보다 훨씬 현실적으로 도움이 될 수 있다고 생각한다. 개발 문화 또는 체계를 갖추고자 하는 조직이라는 꼭 한번 읽어볼만한 책이지 않을까 생각한다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 동시성 프로그래밍

2022. 4. 21. 17:11 | Posted by 꿈꾸는코난

< 동시성 프로그래밍 > | 다카노 유키 지음 | 김모세 옮김 | 한빛미디어

 

일반 서버 개발자라면 한번쯤은 concurrent programming을 해본 경험이 있을 것이다. C 언어를 사용하든 Java 언어를 사용하든 Python 언어를  사용하든 multi-process 또는 multi-thread 개념을 지원하기 때문에 이를 이용해서 concurrent programming에 대한 개념과 동작에 대해 어느 정도 이해하고 있는 사람이 많을 것 같다. 하지만 thread나 process를 생성하고 실행하는 함수를 활용해서 프로그래밍하는 것과 그 개념을 제대로 이해하고 프로그래밍하는 것에는 큰 차이가 있다. 이 책은 이런 관점에서 제대로 된 concurrent programming에 대한 개념을 설명하고 다양한 언어로 된 샘플 코드를 제시하고 설명하고 있다.

이 책은 총 8장으로 구성되어 있다. 먼저 concurrent programming에 대한 개념과 기술을 소개하고 concurrent programming이 중요한 이유에 대해 설명한다. 또한 concurrent programming을 위한 어셈블리, C, Rust 언어에 대한 기본 개념과 문법 등을 설명한다. 개인적으로 Rust 언어에 대한 개발 경험은 없지만 대략 문법적인 구조를 이해하고 샘플 코드에 설명되어 있는 설명만 읽어도 대략적인 코드에 대해 이해할 수 있었던 것 같다. 따라서 Rust 언어에 대해 잘 모르더라도 큰 부담을 가지지 말고 책을 계속 읽어나가면 될 것 같다.

그 다음부터는 동기화 처리에 대한 주요 알고리즘 및 기술에 구조에 대해 설명한다. 특히 atomic 연산과 mutex, semaphore 등 동기화 처리에 필수적인 개념에 대해 자세히 설명하고 있다. 이 동기화는 기본적으로 race condition이라고 하는 concurrent programming에서 할상 발생할 수 있는 현상을 제어하기 위해 필요하며 추가적으로 deadlock에 대한 개념과 이를 회피하기 위한 알고리즘에 대해 설명한다.

그 다음 장 부터는 세부적인 주제별로 자세히 설명한다. 비동기 프로그램을 구현하기 위한 다양한 방법을 설명하고, 멀티태스크의 개념과 전략, STM(Software Transactional Memory)에 대한 설명과 공평성을 보장하는 lock에 대해 설명한다. 마지막 장에서는 동시 계산 모델에 대해 설명하면서 액터 모델과 파이 계산, 람다 계산 등의 개념을 소개하면서 자유변수 및 변환, 간략화에 대한 소개를 한다. 가장 어려웠던 부분 중의 하나였던 것 같고 아직도 그 개념을 정확히 이해하기는 어려웠던 것 같다. concurrent programming에 대한 개념을 이해하고 활용하고자 할때 8장은 건너뛰어도 괜찮지 않을까 생각한다.

전반적으로 개념 소개 및 필요한 이유, 그리고 샘플 예제가 잘 소개되어 있어서 이해하는 데 별 문제는 없었다고 생각한다. concurrent programming에 대해 이 정도로 다양한 기술과 개념이 한권에 담겨 있는 책은 잘 보지 못한 것 같다. 또한 샘플도 잘 설명되어 있어서 실제 실행시켜 보면서 그 개념을 파악할 수 있도록 구성되어 더 좋았던 것 같다.

한편으로는 몇가지 아쉬움이 있는 부분도 존재한다. 일단 각 예제에 대해 설명까지만 하고 실제 실행 결과를 보여주지 않아 실제 실행해 보기전까지는 그 결과를 예측하기 어렵다는 것이다. 책에 충분히 설명이 있긴 하지만 그래도 실행 결과를 보여줬더라면 조금 더 이해하기 좋지 않았을까 생각한다. 다른 한편으로는 번역에 대한 아쉬움이다. 거의 같은 페이지에서 일부는 한글로 일부는 영문으로 번역된 부분이 있다. 좀 더 일관성있게 번역되었더라면 더 좋지 않았을까 생각한다(이 책의 원 저자가 일본인이기 때문에 원본이 그랬을 수도 있다. 하지만 번역하면서 그런 부분까지 손봤더라면 하는 아쉬움은 있다). 이 부분은 120 페이지의 "다음 그림은 RW락의 읽기락과 뮤텍스락의 실행속도를 비교한 것이다"와 121 페이지의 "다음 그림은 RW락의 Write락과 mutex락의 실행속도를 비교한 것이다"이다.

추가적으로 몇몇 오타가 있는 것 같다.
54 페이지 : 중간 예제에서 "enum Rule" 은 "enum Role"로 수정되어야 한다.
58 페이지 : 코드 설명하는 부분 3에서 "뒤에 기술한 -> 32"는 "뒤에 기술한 -> u32"로 수정되어야 할 것 같다.
120 페이지는 위에 언급한 부분 참조
178 페이지 : 반복서버(interactive server)는 그냥 인터렉티브 서버로 그대로 적는 것이 좋을 것 같다.

하지만 전반적으로 책을 읽고 이해하는 데에는 문제가 없기 때문에 concurrent programming에 대한 개념을 이해하고 활용하고자 한다면 충분히 기본 도서로 사용할 수 있을 것 같다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 처음 배우는 딥러닝 챗봇

2022. 3. 29. 18:14 | Posted by 꿈꾸는코난

< 처음 배우는 딥러닝 챗봇 > | 조경래 지음 | 한빛미디어

 

요즘 워낙 인공지능이 대세이다 보니 관련한 다양한 서적이 출간되고 있는 것 같다. 관심을 가지고 여러 책을 읽어봤었는데 대부분 복잡한 수학적 개념부터 시작하기 때문에 상당히 읽기 어려웠던 기억이 난다. 물론 간단한 샘플로 같이 설명하고 있지만 테스트 환경 구성도 어렵고 시간도 많이 걸리는 듯한 느낌을 받았다. 제대로 배운다면 수학적인 지식을 기반으로 기본 개념을 이해하고 환경을 구성하는 것이 맞겠지만 실제 테스트에 들어가기 전에 지치는 듯한 느낌을 강하게 받았던 생각이 든다.

이 책은 다른 책들과는 조금 다른 느낌인 것 같다. 일단 복잡한 인공지능 개념이나 수식은 최대한 배제되어 있고, 많은 부분 직접 확인할 수 샘플로 구성되어 있다. 테스트를 위한 샘플도 python으로 조금만 개발해본 사람이라면 별다른 어려움없이 자신이 사용하던 환경 그대로 테스트가 가능하다. 따라서 일단 기본적인 개념 이해와 동작 확인을 쉽게 할 수 있기 때문에 훨씬 수월하게 책을 읽어갈 수 있었던 것 같다.

 


책은 총 11개의 챕터로 구성되어 있다.  1장과 2장에서는 챗봇에 대한 이해와 챗봇의 활용사례를 설명하고, 파이썬에 대한 기본적인 소개를 하고 있다. 챗봇과 파이썬에 대한 기본적인 지식이 있다면 이 부분을 건너뛰어도 되겠지만 그렇더라도 개념을 확인하는 차원에서 빠르게 읽고 넘어가면 좋을 것 같다. 3장부터 5장까지는 한글문장 처리를 위한 개념과 라이브러리, 그리고 실제 사용 예제를 설명한다. 학교 다닐 때 한글 형태소 분석을 하는 연구실이 있었는데 이 책에서 설명하는 라이브러리 사용만으로 한글 형태소 분리 및 텍스트 유사도까지 쉽게 구현할 수 있어서 상당히 흥미로운 것 같다. 이 부분까지가 기본적인 한글 문장 분석으로 볼 수 있을 것 같다.

6장과 7장에서는 챗봇 엔진에 필요한 딥러닝 모델과 챗봇 학습툴 만드는 과정을 설명한다. 한글 문장 분석을 위한 딥러닝 분류 모델을 만드는 방법과 문장 분류를 위한 CNN 모델에 대한 설명, 그리고 개체명 인식을 위한 양방향 LSTM 모델까지 다양한 개념과 어떻게 python으로 구현할 수 있는지 샘플을 이용하여 잘 설명하고 있다. 또한 챗봇 학습툴을 만들기 위해 mysql을 이용한 데이타베이스 연동, 학습데이타 생성 및 관련한 데이타베이스 작업 등을  설명한다. 특히 mysql에 대해 제대로 알지 못하더라도 기본적인 명령어와 문법을 설명하고 있기 때문에 쉽게 따라할 수 있다.

8장부터 11장까지는 7장까지 학습한 내용을 기반으로 챗봇 엔진과 챗봇 API을 만드는 과정을 설명한다. 그리고 이를 응용하여 카카오톡 챗봇과 네이버톡톡 챗봇을 만드는 과정을 설명한다. 특히 카카오톡 챗봇과 네이버톡톡 챗봇을 만들기 위해 회원가입부터 API를 사용하는 방법까지 자세히 설명하고 있기 때문에 쉽게 따라하고 결과를 확인할 수 있는 것 같다.

챗봇은 chatter와 robot의 합성으로 대화하는 로봇으로 정의할 수 있다. 이미 다양한 고객센터에서 텍스트나 음성으로 고객을 응대하고 있고 그 영역이 점점 넓어지고 있다고 할 수 있다. 이 책에서 설명하는 내용을 차근차근 따라한다면 챗봇의 동작방식과 제작 방식을 쉽게 이해하고 실제 경험할 수 있을 것 같다. 그리고 자신만의 챗봇을 만들어 새로운 영역에 적용해 볼 수도 있지 않을까 생각한다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이전 1 2 3 4 다음