[도서리뷰]기계는 어떻게 생각하고 학습하는가

4차 산업혁명이라고 일컬어지며 나타난 AI 현시대의 사람들은 과연 이 AI에 얼마나 알고 있고, 어떻게 생각할까? 많은 매체에서 AI와 머신러닝에 대해 수없이 떠들지만 정작 그런 것들에 대해 피부로 느끼는 사람은 많지 않다.

이 책은 AI가 무엇인지 주변에서 수없이 떠들지만 정작 정확히 알지 못하는 사람들을 위해 만들어졌다. 전 세계에서 연구중인 현재 프로젝트와 그 프로젝트들이 이루고자 하는 목표지점 그리고 AI 프로젝트들이 진행되면서 발생할 수 있는 여러가지 문제들을 한꺼번에 다루고 있다. AI가 단순히 어떤 것이다라는 것을 넘어서 책의 제목 답게 기계가 학습하는 방식부터 시작해서 과거부터 지금까지 어떻게 해왔는지 앞으로 진행되면서 어떤 방식으로 기계학습을 하게 될지 광범위한 내용을 다루고 있다. 덕분에 AI가 무엇인지 하나도 모르는 사람이 읽어도 전혀 부담스럽지 않은 내용이다.

물론 전문용어가 많고 이해하기 쉽지 않은 개념들이 있지만 이쪽 분야의 지식이 조금 있다고 한다면 이 책을 읽으면서 새로운 인사이트를 발견 할 수 있을 것이다.

AI라는 것이 분명 새로운 기술이고 우리를 미래로 데려다 줄 기술이긴 하지만 책을 읽다보면 밝은 미래만 기다리고 있는 것은 아니다 아직 인간이 예측하여 제대로 활용하고 있는 기술이 아니다보니 예측하지 못하는 무서운 내용들도 나온다.

기계의 가장 무서운 것이 무엇이라 생각하는가? 기계의 가장 무서운 점은 사람이 아니라는 점이다.

예를 들어 자동차 운전수가 사람이라면 갑자기 뛰어든 사람을 보고 차를 멈추거나 핸들을 틀어 갑자기 뛰어든 사람이 다치지 않도록 할 것이다. 만약 멈추지 못하는 순간이고 핸들을 돌렸을 때 더 큰 사고가 날 수 있다면 어떻게 되겠는가? 사람은 상황에 따라 사람을 우선시 하기도 하거나 자신이 탄 차가 사고가 나는 쪽을 택할지도 모른다. 하지만 기계는 다르다. 두가지 경우에서 덜 손해가 나는쪽으로 행할 것이다. 그게 사람을 치고 달리는 방향이어도 말이다. 운전수가 사람이라면 절대 생각할 수 없는 부분이나 기계가 운전한다면 충분히 일어날 수 있을 법한 일이다.

심지어 기계가 어떻게 결론을 내는지 사람이 프로그래밍했음에도 불구하고 알지 못하는 경우도 있다. 알 수 없는 미래가 펼쳐지고 있는 것이다. 컴퓨터가 정확한 결론을 내고 사람이 기대한 것 보다 더 높은 정확성을 보여주지만 사람은 그것이 어떤 원리로 나오는지 알지 못하는 것이다. 미래가 어떻게 다가올지 모르지만 언젠가 사람이 이해하지 못하는 기계는 나올 것이다.

다만 어떻게 준비하느냐의 문제이며 그건 결국 그 분야와 기술에 대한 깊은 이해가 없이는 힘들 것이다.
아주 먼 미래가 아니다. 바로 목전이다. 기계 학습에 대해 AI에 대해 조금이라도 이해를 하고자 하는 사람은 이 책이 도움이 될 것이다.

“기계는 어떻게 생각하고 학습하는가”는[링크] 에서 확인 할 수 있다.

[도서리뷰] 처음 시작하는 R 데이터 분석

[도서리뷰] 처음 시작하는 R 데이터 분석


R을 처음 시작하는 또는 통계를 사용해 무엇인가 수치를 측정해보고 싶은 사람에게 딱 맞는 책이라 할 수 있다.
처음을 시작하게 도와주는 책 답게 앞으로 사용하게 될 프로그램의 기능이나 각 메뉴에 대해 자세히 설명하고 한글이 깨지는 문제 상황에 대해서도 적어주었다.
분석에 사용될 데이터의 정의나 데이터 분석이 왜 필요한지 데이터 분석의 일련의 과정을 먼저 설명해주면서 데이터 분석을 왜 해야 하는지 데이터 분석이 어떤 상황에서 필요한지에 대해 잘 설명해주고 있다. 문과라면 어려울 수 있는 명칭이나 개념들은 그림을 사용해 설명하여 문과 계열의 전공자도 데이터 분석을 접하는 데 도움이 될 수 있도록 책을 구성한 점은, 실제 비즈니스를 하는 사람이나 경영을 하는 사람도 데이터 분석이 무엇인지 알 수 있게 해주고 더 나아가 기본적인 데이터 분석을 할 수 있도록 도움을 준다.

책의 중반부부터는 데이터를 가공하는 과정에서 사용되는 기능들에 대해서 예를 들면서 보여주고 있다. 초보자를 위한 책답게 꼼꼼한 설명이 들어가 있어 독자의 이해를 돕고 있다.
다만 초보자 위주의 책이고 실습 위주의 내용이 많다 보니 좀 더 어려운 기능이나 책에 없는 기능들에 대해서는 어떤 내용을 참고하면 좋을지에 대한 내용이 많지 않아 R이란 데이터 분석 언어에 대해 더 깊게 공부하고자 하는 사람에게는 오히려 정보가 부족해 정말 필요한 정보는 없다고 생각이 들 수도 있다는 느낌을 받았다.

그래도 초보자가 보기에 충분한 예제들과 프로젝트로 진행하는 것들에 대해서는 데이터를 어디서 얻으면 되는지에 대한 안내와 더불어 가공하는 방법들도 상세히 다루고 있어 초보자가 접하여 R 언어를 익히기 위한 입문서로 좋은 책이란 것은 의심할 여지 없이 분명하다.

[처음 시작하는 R 데이터 분석] 책의 자세한 내용은 [링크]에서 확인할 수 있다.

[도서리뷰][서평]Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹프로그래밍

Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹프로그래밍

이책의 대상은 철저히 초보자로 제한된다. 챕터 1의 내용이 웹 프로그래밍의 이해라는 것이 그 반증이다. 대신 그만큼 웹 프로그래밍을 처음 시작하는 초보자가 알아야 하는 웹의 개념이나 웹이 동작하는 방식에 대해 자세히 다루고 있다. 많은 웹 개발자가 웹의 동작 방식이나 HTTP 프로토콜에서 상태 코드가 의미하는 바가 무엇인지 모르는 경우가 많은데, 이 책은 그 부분의 가려운 부분을 정확히 긁어주고 있다. 이런 부분을 자세히 다루려면 네트워크 부터 시작해서 자칫 내용이 방대해지기 쉬운데 이 책에서는 웹 프로그래밍을 시작하기에 적당한 내용을 잘 정리해서 담은 느낌이다.

2장은 파이썬의 라이브러리 소개가 주를 이룬다. Django 프레임워크를 알기 위해서 웹서버의 구조를 설명하고 파이썬을 사용해 웹 서버를 개발 할 수 있는 웹 서버 라이브러리에 대한 내용을 제공하고 파이썬에서 웹 서버를 구축하는데 필요한 라이브러리로 CGI와 WSGI를 소개한다. 웹 서버를 사용하기 위한 기본적인 개념을 이해하고 난 후면 이제 Django에 대한 내용을 다루기 시작한다.

기본적으로 Django는 프레임워크다. 아무리 파이썬이 러닝 커브가 낮고 쉽게 배워서 쉽게 쓰는 것이 장점이라고는 해도 웹 프로그래밍과 프레임워크가 운영되기 위한 기본적인 지식이 없으면 프레임워크를 써서 개발하는 것은 쉬운 것이 아니다. 그런 면에서 이 책은 상당 부분 부족한 부분을 채워 주고 있다고 얘기할 수 있다.

초급 개발자들을 위해 친절한 면은 그뿐이 아니다, Django를 쓰기 위해 설치를 해야 하는 부분도 상세하게 나와 있어 어렵지 않게 따라 할 수 있는 것도 큰 장점이다. 디자인 패턴이나, ORM 같은 개발 기법들도 함께 설명하고 있다. 디자인 패턴이나 개발 기법들은 그런 방법들을 설명하기 위해서 따로 책이 나올 정도로 방대한 내용이지만 이 책에서 파이썬으로 개발하기 위해 필요한 내용을 가볍게 다루고 있다. 이러한 내용이 있다는 것을 알게 되는 것만으로도 초급 개발자에게는 상당히 도움이 될 수 있다. 다음에 필요하다면 공부를 따로 하는 것도 하나의 방법이다.

이 책은 파이썬과 Django라는 프레임워크를 사용하기 위해 필요한 웹의 베이스가 되는 지식과 파이썬에서 활용 가능한 많은 라이브러리와 데이터베이스와 연동 방법 등 웹 프로그래밍을 하기 위해 필요한 모든 것을 총망라했다고 볼 수 있다. 그만큼 초급 개발자, 특히 웹을 오래 하지 않은 개발자는 여러 면에서 도움이 될 수 있으리라 생각이 든다.

이 책 “Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹프로그래밍” 는 [링크] 에서 확인할 수 있다.

[서평][도서리뷰] 9가지 사례로 익히는 고급 스파크 분석(2판)

9가지 사례로 익히는 고급 스파크 분석(2판)

스파크를 경험해봤거나 사용 중이지만 좀 더 다양한 방식을 통해 데이터 분석을 하고자 하는 사람이라면 이 책을 읽어보는 것을 적극적으로 추천한다.

데이터 분석을 위해서 아파치 스파크에 입문하긴 했으나, 매일 비슷한 상황에서의 분석으로 지쳐 있는 사람이라면, 이 책에 나온 9가지 사례에 대한 내용을 보다 보면 새로운 시각으로 데이터를 볼 수 있는 눈을 키우는 데 도움이 될 거라 생각된다.

보통은 하나의 시스템에서 데이터를 분석하므로 매번 쓰던 방식만 사용하고, 데이터의 분석보다는 어떻게 하면 더 잘 가공할 수 있을지에 대한 고민을 더 하게 된다.
이러한 고민이 틀린 것은 아니나 때로는 새로운 기준을 세우고 다른 시각에서 데이터를 보는 것도 필요하다고 생각한다.
엉뚱한 곳에서 다른 시각으로 데이터 분석을 하다 보면 우연히 원하던 데이터를 얻을 수 있는 새로운 인사이트를 얻기도 한다.

그러기 위해서는 여러 가지 기능을 사용해보고 다양한 방식으로 데이터를 분석해보아야 하는데 보통 생각하기도 쉽지 않고 경험하기도 어려운 것이 사실이다.

이 책에 나오는 9가지 분석 사례는 각각의 데이터가 가지는 특성과 분석 방향이 모두 다르기 때문에 스파크에 존재하는 여러 분석 기능들을 경험해 볼 수 있도록 도움을 준다.

타깃으로 하는 데이터도 샘플 데이터지만 적지 않은 양이고 각각의 분석 목적에 맞도록 준비할 수 있도록 하고 있어 실제 데이터 분석에 가깝도록 데이터 분석을 할 수 있게 해준다.

책의 제목처럼 내용 자체가 고급 분석이기 때문에 데이터 분석이 무엇인지 잘 모르는 사람에게는 어려운 부분이 많다.
하지만 데이터 분석을 위한 환경 구성도 책의 앞부분의 일부를 할애하여 설명하고 있기 때문에 스파크가 아닌 다른 시스템이나 언어를 사용해서 분석하던 사람도 접근할 수 있도록 배려하였다.

더불어 스파크가 1.0에서 2.0으로 변경되면서 추가되거나 변경된 기능들에 대한 내용도 포함되어 있어 최신의 내용도 놓치지 않고 익힐 수 있도록 하고 있다.

좋은 내용이 많은 책임에도 불구하고 내용 자체가 쉽지 않아 스파크를 처음 익히는 사람들은 이 책으로 시작하기에는 상당히 많은 시간과 노력이 필요하다. 그만큼 데이터 분석이라는 분야가 어렵고 어려운 것으로 생각된다.

지금까지 하던 방식과 다른 방식으로 데이터 분석을 하고 싶은 사람.
내가 사용하고 있는 기능 외에 스파크의 다른 기능들을 알고 싶은 사람.
스파크를 스파크답게 제대로 사용해보고 싶은 사람.
다른 언어나 시스템에서 이미 데이터 분석을 해봤으나 스파크를 사용해보고 싶은 사람.
그 외 본인이 한빛 미디어와 O’REILLY 책이 잘 맞는다는 분들에게는 이 책을 적극적으로 추천한다.

이 책 9가지 사례로 익히는 고급 스파크 분석(2판)” 는 [링크] 에서 확인할 수 있다.

[서평][도서리뷰] 스프링4 입문

스프링은 현재 5가 공식적으로는 최종 버전이다. 이 책은 스프링4를 다루고 있어 사실은 한발 늦었다고 생각하고 있지만, 스프링의 많은 기반이 되는 것이 현재까지는 3.2나 4에 맞춰져 있는 상황이어서 사실 지금부터 스프링을 공부하는 사람에겐 많은 변화를 가져온 5부터 공부하는 것보다는 스프링4를 먼저 공부하는 것이 좀 더 쉽게 공부하는 방법이 아닐까 생각한다.
그런 관점에서 보면 이 책은 실 업무에서 스프링을 다루는데 필요한 거의 모든 부분을 다루고 있다고 생각이 든다.

스프링 하면 보통 다들 생각하는 책은 Toby Lee 님의 스프링 책일 것이다.
하지만 그 책은 스프링의 모든 것을 다루다 보니 정말 어마어마할 정도로 양이 많다.
그 책은 공부하기 위해서 보다는 작업을 하다 reference를 찾는 용도로 사용하는 것이 더 적합하다는 생각이 들 정도로 자세하고, 스프링에 대해 자세히 다루고 있다.

스프링을 실 업무에서 사용하고 있으나, 2% 부족함을 느끼는 개발자라면 적극적으로 이 책을 추천한다.
이 책은 Toby 님의 스프링 책만큼 많은 내용을 다루지는 못하고 있지만, 업무를 하면서 필요로 하는 기본적인 내용은 빠지지 않고 담아 두었다고 생각된다.

스프링에서 가장 중요한 DI(Dependency Injection)와 AOP(Aspect oriented programming)에 대해서는 이해하기 어렵지 않도록 친절한 설명과 함께 적절한 예제로 기술되어 있어 확실하게 개념을 잡고 넘어가기에 좋다.

이번 “스프링4 입문” 책을 보면서 한빛 미디어의 개발 서적이 점점 좋아지고 있다고 느끼게 된 점이 하나 있는데, 코드의 설명에 대한 부분이다.
물론 이 부분은 지극히 개인적인 관점이라 다른 독자들은 어떻게 생각할지 모르겠다.
이전의 한빛 책들을 보면 “코드에서 몇번째 줄” 이라고 기술되어 있는 경우가 많았다. 하지만 이번 책에서는 친절하게 코드별로 설명하고 있는 부분에 대해 따로 표시를 해주는 친절함을 발견할 수 있었다.

코드가 들어간 개발 서적을 보면서 항상 불편하다고 생각했던 부분인데 적극적으로 개선해주는 모습을 보여주는 한빛 미디어의 서적을 보니 문득 편집자분의 노고가 느껴졌다.

스프링의 전체적인 부분을 입문자의 입장에서 빠짐없이 설명하고 있다는 장점 외에도, 책을 쓰신 분의 Know-How 나 아키텍터 관점에서 프로그램을 볼 때 어떤 부분을 봐야 하는지
어떤 부분을 신경 써야 하는지도 기술되어 있어 커리어의 목표를 아키텍터로 잡고 있는 분들에게도 많은 도움이 될 거로 생각한다.

한 가지 아쉬운 점이라면 번역서다 보니 2017년 11월이 초판이지만 실제 책이 쓰였던 시기는 2015년도라는 점이다.
물론 스프링 자체가 5.0으로 넘어가기 전까지는 많은 변화가 있는 프레임워크가 아니고 현재까지도 스프링 4가 주력으로 사용되고 있기 때문에 당장 스프링 5를 공부하려는 사람이 아닌 이상 스프링이 가지는 코어 시스템의 개념을 익히고 스프링이란 프레임워크를 알아가기 위해서는 더할 나위 없는 책이라 생각된다.

이 책 “IT 트렌드 스페셜 리포트” 는 [링크] 에서 확인할 수 있다.

[번역] Spring schema references 에는 버전을 정확히 명시하지 않는 것이 좋다.

먼저 이 글은 do-not-specify-version-numbers-in-spring-schema-references을 번역한 글임을 밝혀둡니다.
혹시 문제가 될 경우 즉시 삭제 하겠습니다.

Spring schema references 에는 버전을 정확히 명시하지 않는 것이 좋다.

만약 당신이 스프링 프로젝트 기반에서 일을 하고 있다면 스프링 설정파일의 헤더 부분에 있는
스프링 모듈에 대한 schema references를 보았을 것이다.

스키마 레퍼런스에서 우리는 xml namespace와 버전 번호에 대한 얘기를 하고자 한다.

버전 번호를 명확하게 하는 것은 필수가 아니다, 그리고 당신은 그것을 뺄 수 있다.
여기 예제를 보면 사실, 버전은 제거 해야 한다.

스프링은 자동적으로 프로젝트에서 사용 가능한 가장 높은 버전의 모듈을 선택합니다.
또, 스프링 버전이 업데이트 되거나 프로젝트의 환경이 좋아지는 경우 새로운 기능을 위해 모든 xml 설정을 유지할 필요는 없습니다.

버전을 사용하지 않는 스프링 설정 파일의 사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Other bean definitions-->
</beans>

이건 아래처럼 사용 될 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Other bean definitions-->
</beans>

의견을 덧붙이면..

개인적으로 스프링은 책으로 공부한 것보다 인터넷에서 찾아보며 공부한 시간이 더 많네요.
책에 이런 내용들이 담겨져 있다면 좋을 것 같다고 생각이 드네요.

기술적인 부분이라기 보다는 개발 편의성에 관련된 내용이라고 생각되지만,
그래도 모르는 것보다는 아는 것이 더 좋을 것 같아 이렇게 정리해 둡니다.

더불어 번역을 허락해주신 HowToDoInJava 의 주인이신 Lokesh Gupta 에게 감사 드립니다.

프로그램 개발과 관련된 영문 글의 번역에 대해

[프로그램 개발과 관련된 영문 글의 번역에 대해]

먼저 영어 원문을 번역하기 전에 정의를 해두고 싶어서 글을 쓰게 되었다.

일단 개인적인 목표로 인해 프로그램 개발 영역에서 영어로 내용을 풀어서 설명하고
영어로 된 내용을 이해하기 위해서 영어공부가 선택이 아닌 필수가 되었다.

사회 초년생 때에 다녔던 회사의 오너분은 개발하는 데 영어는 필요치 하지 않다고 했었다.
그때에는 나도 동의를 했었고, 그랬기 때문에 그 회사에 몸담고 일을 할 수 있었다.

하지만 지금은 아니다, 아니 그때도 아니었다.
개발자로서 성장하고자 하는 생각을 하고 있다면 영어는 당연히 해야 하는 분야다.

그 이유는 프로그램 개발이라는 것은 해외에서 시작됐고,
새로운 기술도 해외에서 더 먼저 발표되고 영어로 먼저 공유되기 때문이다.

영어를 쓰지 않아도 되는 날은 오지 않는다.

가령 번역기술이 아주 좋아져서 인터넷의 모든 글에 대해 실시간으로 번역할 수 있다 하더라도,
영어문장이 가지는 의미와 한국어가 가지는 의미는 다르기 때문에 같은 문장이어도
영어로 읽을 때와 번역된 한국어로 읽을 때의 내용은 다르다.

그렇기 때문에 개발자라면 영어는 당연히 해야 하는 영역이며, 하지 않으면 그 순간부터 도태되는 것이다.

그리 하여 나는 영어 공부를 시작했고, 이제는 내가 가진 기술에 대해 영어로 설명할 수 있어야 하고,
상대방이 영어로 설명하는 기술적인 내용에 대해 내가 이해할 수 있어야 한다.

2018년 새해가 밝기도 했고, 매번 미루고 미루었던 IT 기술에 대한 영문의 번역을
이제는 시작하려고 한다.

목표는 한 달에 1개의 프로그램 개발 업계의 영문을 번역하는 것이 목표지만,
지키든 지키지 못하든 꾸준히 작업 할 생각이다.

– 2018년 1월 1일을 시작하며..

#2018_새해_다짐

이상한모임, 연말정산, 회고, 이직

올해는 참 이래저래 힘든 한해였던 것 같다.

이상한모임의 마지막 연말정산의 주제를 회고로 정한 덕분에,
이렇게 글을 써본다.
물론 누군가 볼일은 없을테지만.

원래 목표대로라면 한단계 더 성장하고, 원하는 모습을 하고 있어야 하는데,
무엇이 나를 성장하지 못하게 한건지 곰곰히 생각해본다.

그 무엇 하나 내 마음처럼 안됐고, 그로 인해 만들어지는 그 힘든 마음을
애써 다잡으려고 수십번도 더 노력 했던 것 같다.

그나마 위안이 되는건 새로운 목표를 다시 찾았다는 것?!.

현재의 경력보다 실력이 현저하게 낮다는 점을 뼈저리게 느꼈고,
더 위로 올라가고자 하는 욕구와 힘들고 지쳐서 심신이 피로한 상태가 지속되면서 찾아오는 공허함도 느꼈고,
번 아웃이란 것도 제대로 경험 해보고, 엄청난 무기력감으로 아무것도 할 수 없는 지경까지 가보기도 하고,
여러가지로 자괴감 느껴지는 한해였다.

이제 정말 쉽지 않은 단계에 온 것 같아 마음이 무겁다.

하지만 또 걸어가고 앞으로 나아가기 위해 하루를 살아가지만,
지친 몸은 쉽게 회복되지는 않는 것 같다.

올해 느꼈던 명예욕과 새로운 목표.
이 두가지를 이루기 위해 한발씩 걸음마 배우듯이 하고는 있지만..
더디다.
발이 깊고 깊은 늪에 빠진 듯이 너무나도 더디다.

천천히 한발씩이라도 앞으로 걸어가면
많이 더디고 힘들더라도 나아갈 수는 있겠지.

결국에는 나아가고 뒤를 돌아볼 날이 오겠지.

2017년의 마지막 21일 새벽.

[도서리뷰] IT 트렌드 스페셜 리포트 2018

IT 트렌드 스페셜 리포트 2018

[서평][도서리뷰] IT 트렌드 스페셜 리포트
사실 이 책을 처음 받고 나서 어차피 다 아는 내용일 거로 생각하며 다소 우습게 봤던 경향이 있다.
하지만 첫 페이지부터 시작해서 계속해서 읽어나갈수록 그 생각은 나의 오만이 불러온 착각이었다는 것을 알기까지 오래 걸리지 않았다.

나는 개발자다, 그 때문에 트렌드에 뒤처지지 않기 위해 관심을 항상 가지고 있고,
새로운 기술이나 새로운 제품이 나오면 항상 인사이트 또는 아이디어를 얻기 위해 사용해 보곤 했고 또,
생소한 내용도 아니었기 때문에 오만하게 생각했는지도 모르겠다.

주제는 단순하다. 가트너의 10대 트렌드처럼 국내 상황에 맞게 2018년의 7가지 트렌드에 대해
지금까지 발전해온 역사, 현 기술의 상황, 그리고 미래에는 어떻게 변화할지에 대한 글쓴이들의 고견이 담겨있다.

책 내용에 나왔던 것 중에 가트너의 10대 트렌드같은 경우 국내의 상황과 맞지 않는다는 것에 대한 부분은 나도 상당히 동의하는 점이다.
매번 10대 트렌드를 보고 있지만 실제로 그다음 해에 모든 트렌드가 주목받지는 않았으니까.

IT 트렌드 스페셜 리포트는 압축하고 압축한 7가지 트렌드 기술에 대해 철저하게 국내 관점에서 다루고 있다.
단점이 아니다. 구글이나 아마존 같은 거대 공룡기업이 앞서 기술의 트렌드를 이끌어 가고 시장을 지배하고 있긴 하지만
국내의 특이한 구조 때문에 그런 세계적인 기업도 국내에선 절반을 넘는 것조차도 힘든 지배력을 가지고 있다.
그 이유는 여러 가지 조건이 있다는 것을 독자도 잘 알고 있을 것이다.
그 때문에 국내 상황에 맞게 기술력을 어느 정도로 유지해야 하는지 시장에 뛰어들기 좋은 시점이 언제인지에 대한 부분은
가트너의 10대 트렌드 같은 리포트에서는 쉽게 찾기 힘든 것이 사실이다.

국내의 환경을 제대로 설명해주고 해외의 거대기업들이 가지고 있는 전략과 앞으로 지향해야 하는 기술 수준에 대해서
아주 상세히 다루면서 이 책은 그러한 부분의 갈증을 시원하게 해소해주고 있다.

이 책을 적절한 조언자로 활용하여 국내의 상황에 맞게 기업들이 대응하고 틈새시장을 노린다면
아무리 해외의 거대 공룡 기업이 날고 긴다 하더라도 분명 국내 대기업이 아닌 중소기업에도 승산이 있다고 생각이 든다.

다만 개인적으로 아쉬웠던 점은 책의 취지에 따라 기술 얘기보다는 비즈니스적인 좀 더 넓게 보는 능력이 필요하다는 점이다.
개인에 능력 여하에 따라 다르겠지만, 본인이 기술과 비즈니스의 융합 또는 비즈니스적인 그림을 그리기 힘든 사람이라면
이 책의 활용도는 현저히 떨어질 것이다.

사람에 따라서는 전혀 다른 세상의 얘기가 될 수도 있을 것이다.
나의 경우 개발자로서 앞으로 어떤 새로운 기술을 익혀야 할지에 대한 인사이트를 얻고자 책을 보았지만,
아주 큰 충격과 함께 “이건 무조건 해야 하겠다. “라는 정도의 느낌은 아니었기에 2% 부족한 느낌을 지울 수는 없었다.

그런데도 미래의 비즈니스 전략을 세우려는 사람이나 기술적으로 어떤 부분이 향후 높은 가치를 생산할 수 있는지에 대한
인사이트를 얻기에는 상당히 만족스러운 책인 것은 부정할 수 없다.

이 책 “IT 트렌드 스페셜 리포트” 는 [링크] 에서 확인할 수 있다.

[도서리뷰] Node.js 6.x 블루프린트

자바스크립트는 이제 더 이상 웹뷰에서 데이터를 검증하기 위해서 쓰는 Validation 용 언어가 아니다.
구글에서 크롬브라우저에서 사용하는 V8 엔진을 개발하면서 자바스크립트 언어를 컴파일하는 시간을 빠르게 개선하면서 자바스크립트를 서버용 언어로 탈바꿈시켜버렸다.
V8 엔진은 버전 업을 계속하면서 계속해서 컴파일 속도를 높이는 중이다.

그 이후에 나온 첫 번째 언어가 바로 Node.js다.
Node.js는 빠른 컴파일 속도를 지닌 V8 엔진을 동력 삼아 이벤트 기반, 논 블로킹 I/O 모델을 사용하여 자바스크립트를 훌륭한 서버 언어로 사용할 수 있게 제공하고 있다.

이미 자바스크립트를 사용하여 개발해본 사람을 잘 알겠지만, 자바스크립트의 언어적 특성 덕분에 Node.js는 개발하기가 아주 까다로운 언어가 되어 버렸다.

때문에 이미 개발된 많은 라이브러리를 사용해서 개발하지 않으면 많은 어려움이 따른다.
“Node.js 6.x 블루프린트” 책은 이러한 부분의 어려움을 시원하게 긁어주고 있다.

다양한 프로젝트를 각각의 스타일에 어울리는 라이브러리와 함께 사용하면서 Node.js와 NPM의 개발 생태계까지 함께 경험해볼 수 있다.

앞에서도 얘기했듯이 이 책은 총 10개의 프로젝트를 가지고 Node.js에서 구현할 수 있는 많은 기능을 테스트하고 구현한다.
가장 기본적인 웹 애플리케이션부터 시작해서 데이터베이스, MVC 패턴을 사용한 멀티 애플리케이션, 요즘 가장 핫 하다는 빅데이터에서 사용하는 몽고DB를 사용한 검색기능, RESTful API, Socket 통신 마지막으로 지속적 개발 프로세스를 위한 Docker를 이용한 통합 배포 시스템까지 정말 광범위하게 다룬다.

이 책을 전체적으로 보면, Node.js에서 사용해볼 수 있는 거의 모든 것을 경험해 볼 수 있다.
개인적으로 사용하면 딱 좋을 소규모의 웹 애플리케이션부터 몽고DB와 통합 배포 시스템들로 구성하는 대형 시스템까지 만들다 보면 어느새 NPM을 사용하는 Node.js 언어의 편리함에 푹 빠져 있을 것이다.

모든 책이 그렇듯이, 이렇게 많은 내용을 담다 보니 이 책은 코드의 양이 3분의 2가 넘는다고 느껴질 정도로 책에 코드가 참 많다.
이렇다 보니 책의 내용을 통해 Node.js의 기능을 파악하는 것보다 코드를 통해 테스트하고, 프로젝트가 완성되었을 때의 완성작을 확인하면서 기능을 확인할 수 밖에 없다.

그래서 자연스럽게 책의 난이도가 올라가고 내용이 지루해지는 느낌을 지우기가 힘들다.

기능의 언어적 이해 보다는 여러 기능을 어떻게 사용하는지 확인하고 그 기능들을 사용해 프로젝트로 완성하는 것이 이 책을 읽으면서 얻을 수 있는 이득이 아닐까 생각이 든다.

다만, 이러한 책들은 책을 읽으면서 시스템이 동작하는 프로세스를 이해하기 힘들어 각각의 프로젝트가 완성되고 어떤 방식으로 동작하는지 이해하기 위해서는 추가로 시간을 들여 따로 공부해야 한다는 점이 단점이라면 단점이다.

그런데도 이 책은 Node.js의 많은 부분을 아우르고 있는 것은 분명하다.
만약에 본인이 프로젝트를 진행하면서 자바스크립트의 여러기능을 사용하려면 이 책 한 권만으로도 기능들을 확인하고 테스트하기에는 부족함이 없을 것 같다.

많은 내용을 담고 있어 이 책 한권으로 모든 것을 이해하는 것은 어렵지만,
많은 기능을 테스트하기 위해서라면 이 책 만한 것이 없는 것 같다.

[Node.js] 6.x 블루프린트] 책의 내용은 [링크]에서 확인할 수 있다.