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/

2023년 4월 17일 월요일

2023년 두번째 도서 리뷰 "개발자를 위한 머신러닝&딥러닝"

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

빅데이터가 유행한지는 10년이 넘었고 , 머신러닝이나 딥러닝이 화제가 된지도 꽤 지났다.

요즘은 chatGPT가 화제이다.


요즘 하고 있는 일은 사실 빅데이터에서 벗어나지 않고 있다.

데이터의 수집과 가공, 통계 정도가 대부분의 업무이다.


그런데 여기에 머신러닝이나 딥러닝을 도입해 보면 어떨까 생각해보았다.
데이터가 워낙 많아서 처리하는 서버 성능 고민 같은건 나중에 한다 치고...

해서 관련 자료를 하나 본적이 있는데 거의 대부분 내용이 수학 식이었다.

그때 GG를 치고 덮어 두고 있다가 이번에 이 책을 받게 되었다.


저자는 제목과 서두에 대놓고 수학식 따위 없고 그냥 개발자가 보기 좋은 책이라고 설명 해 주고 있다.

실제로 책은 파이썬과 그 외 몇가지 언어들로 많은 것들을 해 볼수 있도록 내용이 구성 되어 있었다.


1부는 파이썬으로 텐서 플로를 다양하게 활용 하는 방법에 대해서 소개 하고 있다.

물론 친절하게도 텐서플로 소개부터 시작해서 컴퓨터 비전, 자연언어처리 등을 다룰 수 있도록 설명하면서 마지막에는 특성을 예측하는 모델을 만드는 내용까지 다루고 있다.

짧게 설명 하자면 텐서플로를 이용한 머신러닝, 딥러닝의 기초와 간단한 활용에 대해서 다양한 예시를 활용하여 개발자가 접근하기 좋게 설명 해 주고 있다.

세삼...파이썬이 참 열일 하고 있다는 생각이 든다.

파이썬을 우연하게 접하게 되어서 지금까지 잘 쓰고 있는데 그때 공부해두기를 정말 잘했다는 생각이 자주 든다.


2부는 안드로이드나 iOS, 웹에서 텐서플로를 이용할 수 있는 방법에 대해서 소개하고 있다.

개인적으로 앱 개발이 본업이었던 기간이 길어 코틀린이나 스위프트가 크게 낮설지 않아 2부의 내용도 꽤 마음에 들었다.

(웹은 이상하게 개발할 일이 없다 시피 해서 node.js같은건 아직도 잘 모른다.)


앱 개발 개인 프로젝트를 구상중인데 2부 내용 덕분에 프로젝트 구상의 폭이 더 넓어 질 수도 있을것 같다.


책을 짧게 축약해 보자면 개발자가 머신러닝이나 딥러닝을 활용하고 싶을때 많은 도움을 줄 수 있는 내용이 잘 정리 되어 있는 책이라 할 수 있을것 같다.

일단 수학식이 아니라 코드로 얘기 하니까...ㅎㅎ

2023년 3월 21일 화요일

23년 첫번째 도서 리뷰 "파이썬 라이브러리를 활용한 텍스트 분석"

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


올해 첫 리뷰 책으로 파이썬을 이용한 텍스트 분석 책을 선택 했다.

기존에 봤던 파이썬을 이용한 데이터 분석 책의 대부분은 수치 데이터에 대한 이야기 였다면
이번 책은 글에 대한 이야기 이다.


컴퓨터에서 수는 비교적 다루기 쉬운 데이터에 속하는 편이다.

오죽하면 컴퓨터는 글자도 내부적으로 숫자로 처리 할까....(2진수 밖에 못다루니 당연한 얘기지만...)


책은 총 13장으로 구성되어 있으며 제목에서와 같이 텍스트 데이터를 모으고, 정리하고, 필요에 맞게 가공하고 그 결과물에서 데이터가 말하고 싶어 하는 의미있는 무언가를 찾는 과정을 설명 하고 있다.


그 과정에서 웹사이트 크롤링 같은것도 잠시 다루고 있는데 요즘 여기저기서 크롤링에 대한 요구가 많아서 상당히 유용한듯 하다.


텍스트 데이터를 다루는 만큼 기존에 데이터 분석에서 사용했던 라이브러리들과는 다른 라이브러리들을 많이 사용하고 있다.

이 책에서 많이 등장하는 라이브러리는 아래 두 가지가 대표적인 것으로 보이는데 scikit-learn은 기계학습을 위한 라이브러리이고 spaCy는 자연언어 처리를 위한 라이브러리 이다.

아래는 각 라이브러리의 설명을 링크해 두었다.

- scikit-learn : https://ko.wikipedia.org/wiki/Scikit-learn

- spaCy : https://en.wikipedia.org/wiki/SpaCy


위와 같은 라이브러리를 이용하여 유엔총회의 일반 토의 내용이나 로이터 웹사이트의 기사, 자바 개발도구 버그 리포트 내용등을 가지고 텍스트 데이터를 정형화 하여 분석 하는 내용을 다루고 있다.


대부분이 머신러닝과 자연어어 처리 과정을 통하는 내용이어서 그 쪽 방면으로는 크게 경험이 없는 나로서는 역시 익숙하지 않음에서 오는 생소하고 재미있는 내용들이 많은 듯 했다.

특히나 자연언어 처리라고는...대학때 전공과목이 있기는 했지만, 그 당시에는 학부생이 접근해서 이해 하기엔 너무 난해한 내용이었고 요즘 chatGPT처럼 뭔가 직접 경험 해 볼 만한 서비스도 존재 하지 않았었다.


그러다 보니 책에서 소개하는 단어 가방 모델(bag of words model) 같은 내용은 따로 찾아 보지 않으면 어떤 내용인지 쉽게 와 닿지가 않았었다.(이제 책볼때 점점 검색 하는 내용이 많아 지는거 같다...늙어 가고 있단....ㅜㅜ)


전체적으로 평하자면, 전체적으로 내용도 좋고 많이 접하지 못했던 분야의 내용이라 재미도 있는 좋은 책인 것 같다.

보다보니 이 책도 O'Reilly 책인데, 개인적으로 O'Reilly 책이 실패한 적이 별로 없고 내용이나 구성이 나랑 잘 맞는거 같다는 생각이 든다.




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

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