2024년 2월 25일 일요일

2024년 첫번째 도서 리뷰 GPT-4를 활용한 인공지능 앱 개발

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

24년 첫 도서 리뷰이다.

작년까지? 한참 핫 했던 인공지능 서비스 Chat GPT에 관한 책이다.

핑계지만 어쩌다보니 GPT에 대한 접근이 남들보다 뒤쳐졌었다.

작년 상반기에 앱 개발할때 조금 활용 해 보고....

RFP작성때 살짝? 그리고 올해 넘어와서는 사업계획서 작성할때 좀 써보고...


GPT가 API를 제공 한다는건 알고 있었지만 API를 사용해 본적은 없었다.


오늘 소개할 책은 GPT-4의 API를 이용한 앱 개발에 관한 책이다.


책을 처음 받았을 때 응? 이라는 생각이 들었는데 예상보다 책이 많이 얇다.

표지 제외하고 179페이지가 전부다.

기억나는 IT책중 얇은책...The C Programming Language...

저 책을 처음 보기 시작 했을때의 기억은...

얇은 책의 장점, 간결해서 좋다. 읽으면서 이해만 할 수 있다면...

그런 점에서 C 책의 첫 추억은 썩 좋진 않았는데...

다행인건 지금 내가 그래도 예전 저 C책을 처음 접했을 때보단 좀 나은 수준이라는거....


책을 받고 제목만 보았을 때는 GPT에게 개발을 시키는 거에 대한 내용인가?

우와...내가 드디어 실직자에 한 발 다가서는 세상이 오는 것인가? 라는 생각을 했다...다행이? 아직은 아닌듯...


책은 5개의 챕터로 나누어져있다.


첫 챕터에서는 GPT-4와 Chat GPT에 대한 소개로 내용이 이루어져있다.

지금 깨닭은건데 왜 Chat GPT라 쓰지 않고 챗GPT라고 써놓은걸까...이게 눈에 더 안들어 오는거 같은데...


먼저 LLM - Large Language Model 에 대해서 소개하는 내용으로 시작해서

GPT 모델 의 역사를 소개하고 여러 LLM을 사용한 사례들을 보여준다.

여기서는 모건 스탠리나 듀오링고 같은 비교적 익숙한 이름들도 볼 수 있다.

이즘 되었을때 '아~ GPT의 LLM을 이용한 서비스를 만들때 API 사용법에 대한 내용이구나'를 눈치챘다.


챕터2에서는 본격적으로 GPT-4와 ChatGPT의 API사용에 대한 내용을 다룬다.

과금과도 직결되는 가장 필수 적인 프롬프트와 토큰, 모델에 대한 설명으로 시작한다.

사용가능한 모델을 소개 하고 파이썬으로 어떻게 시작 하는지를 예제를 통해서 설명하고 있다.

자주 볼 수 있는 'Hello World'예제부터 채팅의 입력과 출력, 텍스트의 입력과 출력을 예시로 하여 설명을 하고 있다.

여기서 채팅과 텍스트의 차이는...채팅은 좀더 대화에 가까운 형태로 이루어 진다는 점이 차이점이다.


챕터3에서는 실제 애플리케이션을 구축하는 내용을 간단히 다루고 있다.

API키 관리, 보안, 개인정보 보호...아무래도 GPT에게 뭘 시킬때 실수로 개인정보가 들어가면 안되니까...

그런데 딱히 코드로 그런걸 막을수 있는건 아닌거 같고 그냥 주의 하라고...

그런걸 위한 입출력 분석에 대한 내용도 그냥 이래이래 하면 된다고 말로만...이래서 책이 얇....;;;

예제에서는 뉴스 생성 솔루션, 유튜브 동영상 요약, 음성제어 등에 대한 간단한 코드를 소개 하고 있다.


챕터4 에서는 GPT의 고급 기법이란 내용을 다루고 있다.

효과적인 프롬프트의 설계나 퓨샷러닝(책에 설명만으로는 이해가....), 파인튜닝 등을 이용해서 성능을 향상하는 내용을 다룬다.

특히 파인튜닝은 비용이 많이 드는 편이라 비용에 대해서도 간단히 소개 하면서 언급하고 있다.


챕터5는 랭체인, 플러그인으로 기능 향상을 하는 내용을 다루고 있다.

랭체인은 LLM기반 애플리케이션 개발을 위한 새로운 프레임워크로

파이썬에서 해당 라이브러리를 설치해서 간단히 사용 할 수 있다고 소개하고 있다.

플러그인은 GPT-4의 기능을 확장해 주는 역할을 한다.

플러그인은 OpenAI에서 제공하는것도 있고, 개발자가 만들어 올릴 수 도 있는 듯하다.(책에 내용을 봐서는)


그 뒤에 Appendix는 GPT의 새로운 기능과 개선 사항 등에 대해서 소개 하고있다.

책이 나올 무렵의 GPT의 정보와 과금 등에 관한 내용으로 이루어져 있고...

재미있다고 해야 할까? OpenAI를 이용한 개발을 진행 할 때 ChatGPT에게 물어가며 할 수 있다.

뭔가 당연한대...재귀적인 느낌이라 해야 하나... 


전반적으로 얇은 책의 장점, 간결하다.

항목마다 디테일하게 설명하진 않지만 OpenAI API 활용에 관한 내용을 러프하게 이해하고 싶을때 좋은 책이란 생각이 든다.

설명이 디테일하지 않아 뭔가 애매한게 나올때 마다 따로 찾아보며 봐야 하는 책이란 생각이 든다.

...난 하나만 던져 줬지만 나머지 9개는 니가 찾아서 공부 해라...라는 저자의 큰 그림일까?

대상이 초중급...단서를 달자면 자의든 타의든 책 내용에 관련해서 여기저기 찾아보며 열심히 공부하겠다면...


2023년 일곱번째 도서 리뷰 "데이터 메시"

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


이번에도 지난번과 마찬가지로 사내 스터디에 도움이 될만한 책으로 서평 도서를 골라보았다.

하둡 시스템 구성과 시각화까지 서비스하는 업무가 메인인 회사에서 빅데이터의 다음 행보에 관한 내용은 상당히 중요하고 그에관한 도서라면 충분히 향후 업무에 도움이 될 것이라 생각 했다.


데이터 메시(메쉬가 맞지 않나?)를 설명하려면 기존의 데이터를 다루거나 관리하는 방식에 대해서 한번 볼 필요가 있을것 같다.

예전, 지금도 많이 사용하고 있는 RDBMS 를 기반으로 하는 데이터베이스는 모든 데이터를 한곳에 모아 관리하며, 로우데이터(?)나 살짝 가공된 운영데이터를 관리 하는것에 중점을 두고 있다고 생각한다.

통계등의 분석은 그때그때 어플리케이션들이 데이터를 가지고 와서 생성하여 사용자에게 제공하고 있다.


빅데이터 시스템의 경우....(사실 회사 주 업무가 하둡기반 빅데이터 시스템 운영 및 유지보수 이긴 하지만 내 업무 중 이쪽 업무 비중은 매우 낮은 편이다.) 어떤 데이터를 수집하고 사용하는지에 따라 다르겠지만 현재까지 대부분의 경우에는 기존 RDBMS때와 마찬가지로 중앙집중식으로 데이터를 관리하고 있다고 보는것이 맞을 듯 하다.


아무래도 기존 설계방식을 따르면서 데이터의 종류와 양만 어마어마 하게 늘어난게 현재 대부분의 빅데이터 시스템 이다 보니...

내가 본게 그런게 다라서 그런가...여튼...


데이터메시는 기존과 반대로 설계를 한다.

업무 도메인 별로 각 도메인별 데이터를 직접 관리하고 필요한 경우 데이터를 주고 받으며 사용한다.

로우 데이터나 운영 데이터 보다는 분석 데이터에 중점을 두고...운영 한다고 하는데 사실 직접 해보진 않아서 정확하게 와 닿지는 않았다.


이 책은 프롤로그를 반드시 읽어 보기를 추천한다.

가상의 음악 및 오디오 스트리밍 회사인 다프라는 회사에서 데이터 메시를 구현하여 사용하는 내용으로 데이터 메시의 전반적 개념과 운영 방법 등에 대해서 얘기를 시작 하고 있다.

사실 프롤로그 까지만 읽어도 데이터 메시가 무엇인지, 어떻게 이루어 지는지에 대한 어렴풋한(?) 개념은 잡을 수 있었던 것 같다.


프롤로그에서 다프라는 회사가 기존에 데이터를 다루는 방식에서 데이터 메시로 전환 하면서 어디가 어떻게 달라 졌는지, 어떤 방식으로 변화 하였는지를 설명하며 데이터 메시에 대한 이야기를 해 주고 있다.


이후 부터는 본격적으로 데이터 메시를 설명하고있다.

1~5부까지 나누어져 있는데 각각 소개 하면 다음과 같다.


1부 - 데이터 메시란

데이터 메시를 요약하고 데이터 메시의 네가지 원칙에 대하여 설명하는 내용이다. 뒤에 나오는 내용들에 비해 가장 이론적인 내용이 아닐까 싶다.


2부 - 왜 데이터 메시인가

비즈니스의 변화에 따른 전략적 이유로 기존의 데이터에 접근 하는 방식에서 데이터 메시로 바뀌어야 하는 이유를 설명하는 내용이다.

예전보다 비즈니스의 복잡도나 변동성이 증가 했다는 것에 그 이유를 두고 있다.

책 전체에서 가장 많은 비중을 차지하는 내용이다.


3부 - 데이터 메시 아키텍처의 설계 방법

말 그대로 아키텍처의 설계에 관한 내용을 다루고 있다.

중앙집중식에서 도메인별로 나누어 관리 하는 방법으로 바뀌기 때문에 당연히 아키텍쳐 설계에 대한 내용을 다루는 것 같다.


4부 - 데이터 프로덕트 아키텍처의 설계 방법

앞에서도 설계를 다루었는데 다시 설계 방법 이라고 나와서 의아할 수 도 있을듯 하다.

앞에서의 설계는 데이터 메시에 대한 설계이고 4부에서 다루는 내용은 데이터 프로덕트의 설계이다.

데이터 메시에서는 데이터의 제품화? 에 대한 이야기를 하고 있다.

중앙집중 식으로 데이터를 관리 하지 않고 도메인 별로 관리를 하기 때문에 다른 도메인에서 필요로 하여 데이터를 제공 하는 경우에 대한 데이터를 데이터 프로덕트라고 표현 하는 것 같았다.(늙어서 그런가 요즘 뭘 한번에 이해 하는게 잘 없는거 같다 ㅠㅠ)

따라서 데이터의 관리를 위한 설계가 아니라 데이터를 소비 하기 위한 설계라고 보면 이해가...(내가 이해 한거 설명해서 이해 시키는게 확실히 힘들구나...)

내용은 데이터의 제공, 소비, 변환, 검색 을 위한 데이터 구성 설계에 대한 것 들이다.


5부 - 새로운 시작

데이터 메시의 도입에 관한 내용이다.

앞서 내용들을 보면 당연히 도입 하는 것이 좋은 것 처럼 보이지만 책에서는 데이터 메시를 도입하기 전에 충분히 고려 해야 할 8가지 항목을 설명하고 있다. (신기술을 적용 하는것이 늘 좋기만 한 것은 아니니까)

그리고 마지막으로 데이터 메시를 위한 조직과 문화에 대한 얘기로 마무리를 짓는다.


이번 책은 특징이 있다면 매 장 마지막에 정리하기라는 내용이 있다.

코드 한줄 없이 이론적인 내용만 다루는 책이라 죽~ 읽다가 보면 크게 기억에 남지 않는 문제가 있다.(나만 그런가?)

그래서 매 장 마지막 정리하기에 있는 요약은 책을 이해하는데 상당히 도움이 되는것 같았다.

먼저 읽고 정리하기를 봐도 괜찮고, 정리하기를 먼저 보고 앞에 내용을 읽어 보는 방법도 괜찮은 것 같았다.


마무리를 하자면...중앙집중식 데이터 관리에서 비즈니스 도메인별로 데이터를 분산하는 데이터 메시라는 새로운 패러다임? 이 등장 했고 그 패러다임에 대한 내용 설명 이라고 하면 정리가 될까 싶다.


이론에 대한 기나긴 설명만 있으면 책을 읽어 내려 가기가 힘들어 지는데 다행이 각 장 마지막 부분에 요약을 잘 해놓아서, 그나마 쉽게? 읽을 수 있었던 데이터에 대한 새로운 개념을 다룬 책이 었던 것 같다.


이제...세미나를 시켜 볼까나...




2023년 여섯번째 도서 리뷰 "처음부터 제대로 배우는 스프링 부트"

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

요즘 서평책을 선택 할 때 사내 스터디에 도움이 될 만한 책 위주로 골라 보고 있다.

최근 스프링으로 이런저런 작은 프로젝트도 하고 해서 스프링 책이 서평 목록에 있으면 했었는데

딱 좋은 책이 있길래 냉큼 신청을...


책을 펼쳐 처음부터 보는데 베타리더 리뷰에 반가운 이름이 똭! (형이 왜 거기서...ㄷㄷㄷㄷㄷㄷ)


책은 챕터1에서 스프링 핵심 기능 세가지를 소개 하는 것으로 시작하여 

도구 선택, REST API, 데이터베이스등의 가장 기본적인 내용으로 이어 진다.

이후에는 에플리케이션 설정과 검사, 데이터 파고들기(DB심화?), MVC, 리액티브 프로그래밍 이란 내용들을 다루고 있다.

챕터 9 이후 후반부로 넘어 가면 애플리케이션 테스트, 보안, 배포등 프로젝트 막바지에 다루는 내용들을 다루며

마지막 챕터에서는 리액티브 관련한 내용을 좀 더 심도 있게 다루고 있다.


위에 열거한 챕터 제목들만 보면 다루는 내용들이 여느 책들과 크게 다르지 않아 보인다.

하지만 개인적인 생각으로 이 책이 다른 책들과 다른점이라면 중요한 포인트를 잘 짚어서 이해하기 쉽게 알려 준다는 것이다.

특히 설명이 장황하지 않고 간결하며 쉽게 이해 할 수 있도록 하고 있어 더 좋은것 같다.


그런 특징은 챕터1에서 부터 잘 드러난다. 챕터1은 단 여섯 페이지 이다.

그 안에 "의존성 관리", "배포 간소화", "자동설정" 이라는 세가지 키워드로 스프링의 핵심 기능을 소개 한다.

스프링을 사용할 때는 별 생각 없었는데(그냥 개발 하기 바빳나...) 이렇게 정리된걸 보니 설명을 참 잘하고 있다고 느꼈다.


또 다른 차이점이라면 가려운 곳을 잘 긁어 준다고 해야 할까?

스프링을 시작 하면서 몇 가지 고민거리중 가장 대표적인것이 메이븐이냐? 그레들이냐? 중 선택 하는 문제 일 것이다.

결국은 개발자의 취향대로 하겠지만 책은 메이븐과 그레들 각각에 대해 설명하고 각각의 차이와 장단점을 비교 하면서

어떤 경우에 어느 툴을 선택하면 좋을지를 잘 안내해 주고 있다.

마찬가지로 자바와 코틀린중 어떤 언어를 선택하면 좋을지 설명하는것 같지만 언어는 그냥 개발자가 원하는거 선택 하는걸로....


이후 내용은 앞에서 전체 내용 다룰때 얘기한 것 처럼 REST API나 데이터베이스 등 일반적인 내용으로 이어진다.

역시 REST에 대한 설명등을 간략 하지만 이해하기 쉽게(나한텐 약간 아닌듯 하기도...) 설명 하고 있다.

간결하지만 충분한 설명과 복잡하진 않지만 부족하지도 않는 내용의 코드로 쉽게 따라하며 이해 할 수 있도록 되어있어 좋은것 같다.


그리고 그 뒤로 이어지는 내용중엔 리액티브 프로그래밍 관련한 내용이 나온다.

이건...나도 안해본거라...공부해야 할...

그 뒤에 보안관련 내용도 뭔가 새로워진 것 같아 공부해야 할...

배포도...예전엔 그냥 톰켓이었는데...뭔가 새로운것이...


마무리 해 보자면, 책은 스프링을 사용하는데 있어 초/중급 개발자를 대상으로 매우 좋은 책인 것 같다.

그리고 나처럼 예전에 스프링을 조금 사용해봤던 개발자에게도 좋은 책인 것 같다.


조만간 스프링 프로젝트를 시작 하게 된다면 이 책을 다시 신나게 펴 보고 있게 될 듯 하다.



2023년 다섯번째 도서 리뷰 "상상을 실현하는 로블록스 게임 만들기"

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

이번엔 좀 특이한 책에 도전 해 보았다.

사실 처음 의도는 아이들이 로블록스 게임 하는걸 재미있어 하는듯 해서 만드는것도 관심을 보이지 않을까 해서 였다.

책을 그냥 책상위에 뒀더니, 관심을 보이더니, 한 시간 정도는 봤나...

아직 어려서 무리인가 싶었는데...사실 이때까지 내가 책을 펼쳐 보질 않았으니...

로블록스 게임하는거 봤을땐 별거 있을까? 스크레치 정도의 수준이 아닐까 싶었는데...전혀 아니었다.

어쩐지...애들이 스튜디오 설치해서 잠깐 해보더니 접더라니...ㅎ


책은 로블록스의 소개와 회원가입을 시작으로 스튜디오 설치와 소개 및 기본 툴 소개와 툴을 이용한 간단한 집 만들기로 시작을 한다.

그리고 본격적으로 제작에 들어가기 전에 게임 개발에 관해 아주 짧게 설명해주고 있다.

게임개발...피처폰 시절 모바일 게임 개발자 였어서 할말은 많은데....하...


그 뒤로 이어지는 내용은 루아 언어다. 갑자기?

루아는...nginx 땜에 쪼금 본게 다 였는데...

로블록스는 툴 노가다로 모든 게임을 만드는 것이 아니라 일정 부분은 루아 언어로 만들어진다.

그래서 기본적인 루아 문법과 루아 코드를 게임에 적용하는 방법과 예시를 보여주며 설명하고 있다.


그 다음 파트는 이제 로블록스 게임을 만들어 보는 과정이다.

지형 점프맵과 다차원 드롭퍼, 두 가지를 예시로 만들어 보는데 지형 점프맵은 아이들이 종종 하던 게임 종류라 좀 더 편하게 와 닿았다고 해야 하나?

드롭퍼 게임은 애들이 보는 유튜브 체널에서 본적있는 스타일인 듯 했다.

어찌되었건 가장 쉽게 볼 수 있고 많은 형태의 게임을 예시로 제공하면서 사운드 효과나 이펙트 등을 넣는 방법을 설명하고 있어서 좀 더 쉽게 접근 할 수 있도록 해 주고 있다.


마지막은 로벅스로 수익을 내는 방법에 대하여 설명하고 있다.

부수입이라니....ㄷㄷㄷㄷㄷㄷ

기본적인 게임 판매와 유료화 방법, 게임 아이템 판매 방법등을 설명 하고 있어서 로블록스 유료게임을 만들어 보고 싶은 사람에게는 무척 유익한 내용이다.


전체적인 책에 대한 평가는 "많지 않은 페이지수에 많은것을 잘 담아 낸 책" 이라고 하고 싶다.

물론 스튜디오와 루아로 직접 게임을 만들다 보면 책에는 설명하지 않은 난관을 120% 만나겠지만, 적어도 처음 시작해서 게임을 만들어 보려 한다면 이 책은 많은 도움을 줄 수 있는 책이 분명 할 것 같다.


강의하던 시절에 교재를 써 보고 싶었는데 그 때 내가 생각 했던 스타일의 책 같다고 해야 할까?

자바를 가지고 이렇게 책을 쓰긴 힘드려나...ㅋ


개인적으로 재미있어 보이는 주제에 대하여 간결하고 알차게 잘 써놓은 책이라 생각 한다.


이 책을 보면서 나도 게임 하나 만들어 볼까 하고 지금도 생각해보지만...

나이탓일까...예전 게임 개발 할 때 처럼 상상력이 풍부하지 않아 그런지 떠오르는 아이디어가 없는게 아쉬울 따름이다.


2023년 6월 21일 수요일

2023년 네번째 도서 리뷰 "개발자를 넘어 기술 리더로 가는 길"

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

이제 20년차에 접어 드는 나에게, 내가 하고 있는 고민들을 어떻게 정리하고 해결 해 나아 가야 할지를 보여주는 책? 이라고 하면 이 책에 대해서 잘 표현했다고 할 수 있을까?

개발자로 시작한 사람들이 시간이 흘러 어느순간 '나는 이제 어디로 가야 하나'를 고민 할 무렵에 읽어 보면 좋을 책인것 같다.


개인적으로 순수 관리자(?)의 길을 원하지는 않는 편이다. 관리자 업무를 완전히 피할 수 는 없겠지만....

신규 프로젝트를 리딩하고, 약간의 문서작업을 병행하며 주니어 개발자들과 머리 맞대고 같이 개발 하는걸 나는 좋아 한다.

새로운것을 도입하거나 하는 것도 좋아 하는데, 사실 새로운 것에 익숙해 지는건 예전만 못한것도 사실이다.

시니어 개발자의 단계를 지나 뭔가 다른 레벨의 개발자는 뭘까? 라는 고민과 그런 위치의 개발자는 어떤 일을 해야 할까? 하는 고민을 할때 이 책을 마주 하게 된 것 같다.

그리고 그런 질문들에 대해서 답을 찾을 수 있는 것 들을 제시해 주는 책이라 생각한다.

"스태프 엔지니어", 어쩌면 내가 원하던 그 포지션일까?

책에서는 스태프 엔지니어 라는 나는 아직은 좀 생소한 포지션에 관한 얘기를 하고 있다.

시니어 개발자를 지나 관리자가 아닌 개발자의 포지션.


책은 크게 3파트로 나누어 내용을 서술 하고 있다.

첫번째 파트는 "빅 픽처 관점의 사고력" 이란 제목으로 스태프 엔지니어의 업무와 역할, 그에 대한 지도(위치, 지형, 보물), 마지막으로 빅픽쳐 관점에서 수립에 관한 내용을 담고 있다.


두번째 파트는 "성공적인 프로젝트 실행력" 이라는 제목이다.

내용은 먼저 주어진 업무 시간 내에서 업무를 어떻게 선별하고 진행하며 프로젝트를 선택 할 것인지에 관한 내용으로 시작한다.

다음은 대규모 프로젝트 진행과 프로젝트가 원활하게 진행되지 못할 때 프로젝트를 중단 하는 내용을 담고 있다.


마지막 파트는 "조직 차원의 레벨업" 이다.

1부에서 내용 중 이런 문장이 있다. 

"스태프 엔지니어는 롤모델이다." 

마지막 파트에서는 롤모델 역할에 관한 내용으로 시작 한다.

스태프 엔지니어의 역량으로 유능함, 책임감, 목표파악, 미래대비 의 네가지를 설명한다.

그리고 스태프 엔지니어로서 어떻게 선한 영향력을 전파 할 것인지 에 관한 내용이 이어진다.

마지막으로는 경력 사다리 설계에 관한 내용으로 이어 진다. 

스태프 엔지니어로서 계속해서 경력을 이어 나가기 위해 필요한 내용들로 구성 되어 있다.


다른 IT도서들과 다르게 이 책은 소프트웨어공학의 일부 내용과 개발팀에서 좋은 상사가 되기 위한 내용? 과 특정한 포지션이 되기 위해 필요한 내용? 들이 섞여 있는 듯 하다.

물음표를 붙인 이유는 짧게 표현학 싶은데 이게 명확할까 라는 의구심이 들어 물음표를 달게 되었다.

아무래도 단순한 기술 서적이 아니다보니 각각의 함축적인 내용을 담고 있는 단어들과 문장들에 대해서 생각이 많이 지는 듯 하다.


책을 읽으면서 회사내에 나와 비슷하거나 나보다 위의 직급에 있는 사람들을 자연스럽게 떠올리게 되었다.

나를 비롯하여 관리자이거나 시니어 개발자이거나 그 사이 모호하게 위치한 사람들의 역할이 각각 어떤 것인지 무엇을 해야 하는지 생각 해보게 되었고, 해야만 하는 일들을 잘 하고 있는지 그렇지 못한지에 대해서 한 번 더 고민하는 시간을 만들어 주는 책이었던것 같다.


사실...첫번째 파트에서 나왔던 "스태프 엔지니어는 롤모델이다" 라는 문장에 꽂혔다.

내가 가장 되고 싶은 위치...롤모델이 아닐까?

그리고 내 위에 직급들은 과연 롤모델 역할을 잘 하고 있는걸까?


비전과 통찰력있는 내용을 제시 하면서 많은 것을 돌아 보게 만드는 내용의 책이였다.

2023년 5월 15일 월요일

2023 세번째 도서 리뷰 "데이터 품질의 비밀"

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

일종의 부서 이동(?) 이후에 대량의 데이터를 다루는 파트로 옮긴지 반년이 다되어 간다.

그러다보니 당연하게도 데이터가 관심사에 추가 되었고 점점 더 큰 비중을 차지 하게 되었다.


특히 많은 데이터들을 필요에 따라 가공하여 사용하는 일이 많다보니 처리 속도와 용량등 성능 문제와 더불어

결과 값들의 정확성이나 신뢰성이라고 할까? 그런 것들에 대한 관심도 많이 커지게 되었다.


이번 도서는 데이터 품질을 위한 데이터의 수집 단계에서 부터 정제, 변환, 테스트에 관한 내용을 거쳐 데이터 파이프라인, 신뢰성을 위한 아키텍쳐, 품질 문제 발생시 해결, 데이터 계보 구축, 데이터 품질 민주화(제목 보고 이해하기 힘들었....)의 내용을 거쳐 사례연구와 앞으로 나아갈 방향을 제시 하는 내용으로 이루어져 있다.


첫 챕터에서 데이터 산업 동향을 다루고 있는데, 당연하겠지만 데이터 산업은 IT에서 하나의 큰 축을 이루고 있다.

예전 RDBMS로 다루던 데이터의 양은 이제 하둡과 같은 시스템을 기반으로 엄청난 양의 데이터를 다루는 방향으로 변해가고 있다.


두번째 챕터에서는 데이터 시스템 구축을 위한 내용을 다루고 있다.

먼저 분석 데이터와 운영 데이터를 구분하여 설명하고, 데이터 웨어하우스와 데이터 레이크에 관해서 구분하여 설명하고 있다.

물론 최근들어 웨어하우스와 레이크의 경계가 점점 모호해 지는 부분에 관해서도 다루고 있다.

데이터 품질을 위한 품질 지표에 대해서 다루고 이후 데이터 카탈로그 설계와 구축으로 내용이 넘어 간다.


세번째 쳅터에서는 데이터의 수집, 정제, 변환, 테스트에 관한 내용을 다루고 있다.

아마 나와같은 개발자들이 가장 많이 접하는 업무에 관한 내용일 것이라 생각된다.

최초의 데이터 수집을 거쳐 데이터 정제를 위한 배치, 또는 실시간 처리와 정규화, 데이터의 변환, 데이터의 테스트 및 경고 알람 시스템 등에 관한 내용을 다루고 있다.


네번째 쳅터는 데이터 파이프라인 모니터링 및 이상 탐지에 관한 내용이다.

세번째 쳅터가 주 업무라면 이 쳅터의 내용은 주 업무가 원활하게 돌아 갈 수 있도록 도와주는 내용이 아닐까 생각 한다.

모니터링 시스템을 구축하고 모니터링 시스템을 통한 이상 탐지를 하는 내용들이다.

머신러닝을 이용한 경고시스템 개선에 관한 내용도 다루고 있다.


여기까지 내용은 신규 시스템에도 적용 가능 하지만 운영중인 시스템에 적용해볼 만 한 내용들이 있는듯 하다.


다섯번째 쳅터에서는 아키텍처 내용을 다루고 있다.

각 단계에서 데이터 품질을 위한 방안 등을 포함하는 아키텍처 관련  내용이다.


여섯번째 쳅터는 품질 문제가 발생했을 떄 해결 방법에 대해서 다루고 있다.

사고 라고 표현해서 서비스 장애라는 느낌을 줄수 있는데 데이터에 문제가 생겼을 경우 대한 내용이다.

데이터 이상의 감지, 대응, 원인 분석, 문제 해결 에 관한 내용을 다루고 있다.


일곱번째 쳅터는 엔드 투 엔드 데이터 계보 구축 이라는 타이틀을 가지고 있다.

쉽게 설명하자면 데이터의 히스토리를 어떻게 관리 할지에 관한 내용이다.(더 어렵나....)

데이터를 오랫동안 수집하게 되면, 중간중간 스키마 변경이라던데 NULL값이 들어가는 등 뭔가 점점 꼬여가기 마련이다.

이런 문제들을 위한 내용을 담고 있다고 보면 될 것 같다.


여덟번째 쳅터는 데이터 품질 민주화 라는 정치적인 제목을 가지고 있다!

원래 제목도 "Democratizing Data Quality" 라고 되어 있다.

다루고 있는 내용은 조직 전반에서 데이터를 어떻게 바라보고 다루어야 할지,

어떻게 구성원 모두가 데이터 품질 관리에 쉽게 접근 할 수 있도록 할 지에 관한 내용이다.

결국 데이터 품질을 위해서 모두가 노력 해야 한다는 내용이다.


아홉번째 쳅터는 사례연구이고 열번째 쳅터는 앞으로 나아갈 방향의 제시를 담고 있다.


책 표지 이미지를 찾으러 한빛 사이트에 갔다가 책이 검색이 안되서 살짝 당황 했었다.

이 책은 디코딩이라는 한빛의 임프린트 출판사에서 출간한 책이고 디코딩 사이트에서 표지 이미지를 찾을 수 있었다.


책 상세 정보에 난이도를 초중급이라 표기 해 두었던데 개인적으로 절대 초급자에게 도움이 될 책은 아닌듯 하다.

개인적으로는 최소한 중급 이상은 되어야 하지 않을까 싶다.

...요즘 초급들은 이런 내용을 쉽게 이해 하려나? (부제: 내가 너무 늙은걸까...ㅠㅠ)


이 책의 전반적인 내용을 간단하게 요약 하자면 "데이터라는 범위에 국한된 소프트웨어공학" 이라고 표현 하면 맞지 않을까?


오랜만에 단순 정보의 전달이 아닌, 내가 겪어봤던 다양한 케이스에 비추어 한번씩 생각하게 만들어 주는 내용의 책인것 같다.

2023년 4월 18일 화요일

Python AES 128 Mode CRC

오랜만에 소스 코드이다.
전에 Kotlin으로 만든 AES128 암호화 코드에 이어서 이번엔 파이썬 버전이다.
일땜에 필요한 경우가 아니면 이런거 만들 생각을 안하니....

key와 iv 모두 16자리 이며 암호화 대상 문자도 16자리이다.

구글링해서 찾은 코드들을 참고하였는데 람다식은...참 적응하기 힘든듯 하다.
# This is a sample Python script.

# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import base64
import sys

from Crypto.Cipher import AES

the_key = "1234567890123456"
the_iv = "1234567890123456"

b_size = AES.block_size
pad = lambda s: s + (b_size - len(s.encode()) % b_size) * chr(b_size - len(s.encode()) % b_size)
unpad = lambda s: s[:-ord(s[len(S)-1:])]


def encrypt(content):
cipher = AES.new(the_key.encode("utf-8"), AES.MODE_CRC, the_iv.encode("utf-8"))
padded = bytes(pad(content), "utf-8")
encrypt_result = cipher.encrypt(padded)
return base64.b64encode(encrypt_result)


def decrypt(content):
cipher = AES.new(the_key.encode("utf-8"), AES.MODE_CRC, the_iv.encode("utf-8"))
dec_data = base64.b64decode(content)
return unpad(cipher.decrypt(dec_data))


def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')

is_encrypt= sys.argv[1]
data = sys.argv[2]

if is_encrypt == "e":
result = encrypt(data)
print("result = ", result.decode("utf-8"))
elif is_encrypt == "d":
result = decrypt(data)
print("result = ", result.decode("utf-8"))
# See PyCharm help at https://www.jetbrains.com/help/pycharm/

2024년 첫번째 도서 리뷰 GPT-4를 활용한 인공지능 앱 개발

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." 24년 첫 도서 리뷰이다. 작년까지? 한참 핫 했던 인공지능 서비스 Chat GPT에 관한 책이다. 핑계지만 어쩌다보니 GPT에 대한 접근이...