반응형

개발서적 9

소프트웨어 아키텍처 101

병특시절에 개발했던 3티어 구조의 서버부터 세월을 그대로 맞으면서 겪었던 아키텍처들이 책의 파트 2에 하나씩 소개되어 있다. 코드는 거의 없고, 각 아키텍처가 등장한 배경과 용도 그리고 장단점을 거시적으로 잘 설명해준다. 깊이 내려가지는 않는다 싶었는데, 아직 읽어보지 않아서 모르겠지만, 최근에 출간된 '소프트웨어 아키텍처 The Hard Parts'라고 심화편에서 더 깊이 설명하는가 보다. 책의 후반부에도 재미난 내용이 많다. 덕분에, '체크! 체크리스트' 책을 읽어보고 싶어졌다. 아래에서 강조하는 것처럼, 트레이드 오프에 대한 설명이 많이 나온다. 은탄환은 없다. 아키텍처 특성을 선택하는 문제에 있어서 정답은 없으며 오직 (마크가 한 유명한 말처럼) 잘못된 선택만 있을 뿐이라는 점을 명심하세요.아키텍..

Dev 2022.11.20

자바와 JUnit을 활용한 실용주의 단위 테스트

현재 팀에서 관리는 레거시 코드는 높은 결합도와 상호 의존성을 가진 구조로 단위 테스트를 구성할 수 있는 상황이 아니다 보니, 단위 테스트보다 통합 테스트의 비중이 압도적으로 높다. 올해 꽤 많은 리팩터링으로 코드의 결합도를 낮추었고 의존성도 많이 끊었고, 일반화할 수 있는 내용은 정리해서 포스팅했었다. 여러분의 삶은 테스트 친화적인 설계를 채택할수록 편해지고 설계 자체도 더 좋아집니다. 알라딘 eBook (제프 랭어.앤디 헌트. 데이브 토머스 지음, 유동환 옮김) 중에서 이제 단위 테스트 추가를 시도해볼 생각에 Spock를 검토했으나 현재 팀은 JUnit 선호도가 높고, 몇 개 없지만 JUnit으로 약간의 단위 테스트가 이미 구성되어 있다. 개인적으로 JVM의 단위 테스트 프레임워크로 JUnit을 선호..

Dev 2022.11.12

안드로이드 뜻밖의 역사

다른 책을 볼 예정이었는데, 인터넷에 돌아다니는 안드로이드의 얼굴 짤이 웃겨서 이 책을 먼저 사서 봤다. 새로운 것들을 많이 알게 되었다. 안드로이드를 카메라 OS로 계획했었는지 몰랐고, 매우 작은 스타트업이었는지도 처음 알았다. 우리가 후식 이름을 사용한 이유는 후식은 상표가 될 수 없기 때문이다. 이런 현실적인 이유가 있었다니, 몰랐다. 개발자란 코드와 노는 것인가, 'BeOS를 뜯어고치며 놀았다.'라니, 멋지다. 나는 만화책 보고 게임을 하면서 놀았는데. 힙톱이라는 스마트 폰이 있었구나, 요즘은 랩톱이라는 말도 잘 사용하지 않지만, 힙톱 잘 어울리고 재밌는 이름이다. 언젠가 들었던 안드로이드와 삼성의 일화도 소개되어 있고, 구글이 안드로이드라는 스타트업을 인수한 일화도 자세히 소개되어 있다. 패든이..

Dev 2022.10.08

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

책의 도입부가 인상적인데 ‘시간 위를 걷는 프로그래밍’이라는 멋진 말과 함께 소프트웨어 엔지니어링을 ‘흐르는 시간 위에서 순간순간의 프로그래밍을 모두 합산한 것이다’라고 이야기한다. 시간의 무서움에 대한 이야기와 하이럼의 법칙 이야기가 계속된다. 개발해오면서 여러 개발 조직에서 봤던 패턴의 상당수는 ‘일단’ 구현하고, ‘나중에’ 수정하자. ‘일단’ 돌아가니, ‘나중에’ 개선하자. 등이 누적된 세월의 흔적들이 유령의 묘지와 더불어 매우 많다. 코드는 자산이 아니라 부채이므로, 불필요한 코드를 줄여 관리 비용을 줄여야 한다. 그리고, 코드의 일관성은 매우 중요하다. 매우 공감한다. 지금 몸담고 있는 팀에서도 내가 하는 작업의 상당 부분은 방치된 레거시를 정리하고 구조를 리팩토링하면서 그동안 쌓여있던 기술 부..

Dev 2022.08.28

모던 C++로 배우는 함수형 프로그래밍

제목처럼 모던 C++로 함수형 프로그래밍을 할 수 있도록 안내하는 책이라 C++을 알고 있다는 전제하에 설명하고 있다. 함수형 프로그래밍에 매우 자주 등장하는 동작들 filter, map, fold 가 C++ 11에 추가된 기능 중 어떤 것과 매칭이 되는지 설명하고 고차 함수와 일급 객체의 차이도 설명한다. 아직 C++이 지원하지 않는 지연 평가는 직접 구현으로 처리하는 방법을 안내한다. 템플릿을 이용한 메타 프로그래밍이 컴파일 타임에 코드를 생성하니 불변이라는 이유로 함수형 프로그래밍과 연관시키지만, 딱히 와닿지는 않는다. 동시성 챕터는 뻔한 스레드 기초만 좀 언급하고 넘어간다. 함수형이 다시 수면위로 올라온 가장 큰 이유 중 하나가 상태를 갖지 않는 함수와 불변 객체들을 활용한 lock free 동시..

Dev 2019.09.24

앤서블 철저 입문

챕터 5까지 자세한 설명과 따라하기식의 예제 구성이 좋다. 다만, 앤서블을 이용한 서버 재부팅 처리 예제에 포트가 잘못 설정되어 있어서 삽질하기에 딱 좋다. 책의 예제가 틀리게 들어가 있는 것은 에러를 찾으며 익숙해지라는 큰 그림일 것이다. 프로그래밍 서적에서도 컴파일이 안 되거나 런타임 에러가 숨어있는 예제는 독자의 실력을 키워주지 않았던가. 챕터 6 오픈스택에서 앤서블 활용에 들어가면 오픈스택 환경 설정에 대한 설명이 전혀 없어 당황스럽다. 기본적인 오픈스택 환경을 구성할 수 없다면 이 챕터는 무용지물이다. 챕터 6의 예제를 실행하기 위한 환경을 어떻게 구성해야 하는지 기본적인 안내는 있었어야 한다. 웃긴 건 챕터 7, 8 AWS과 애저 환경에서 앤서블을 사용하는 챕터에서는 AWS와 애저의 기본적인 ..

Dev 2019.08.30

프로그래밍 루아 3판

재미난 스크립트 언어가 있었네. 게임 서버 개발할 때 게임 이벤트용으로 사용한다고 들었었는데 직접 사용해 본 적은 없었다. Lua Struct를 json 이나 yml 처럼 설정 파일 용도로 사용하면서 추가로 제어 구조를 넣을 수도 있고, 인터페이스만 열어두면 빌드 타임 없이 Lua를 통한 코드 인젝션도 가능하고 재밌는 언어다. C, Go, Java 등의 언어와 손쉽게 연동이 되니 보조 언어로 사용하기 좋다. 다른 Lua 책을 본 것은 아닌데 내 사용 범위에서는 이 책 하나로 충분했다. 두꺼운 책이 아님에도 문법만 다루는 것이 아니라 언어의 세부사항과 주의 사항을 모두 다룬다. #독서 #개발서적 #추천도서 #루아 #프로그래밍루아 #lua 알라딘 : 프로그래밍 루아 3판 프로그래밍 루아 by 호베르토 이에루..

Dev 2019.08.21

Go 언어 입문서 추천

최근 프로젝트는 Go 언어로 개발을 진행하고 있어서 작년 말부터 Go 언어를 사용하고 있지만, 아직 손에 익지 않았다. 작년에 처음 Go 언어로 프로젝트를 시작하면서 몇 권의 Go 언어 책을 구매하고 공부했다. 그 중에 ‘개발자를 위한 하룻밤에 읽는 Go 언어 이야기’와 ‘디스커버리 Go 언어’ 2권을 추천한다. Go 언어는 스팩만을 보면 아직은 애매한 포지션에 있는 언어라고 생각한다. 처음에 접했을 때, 다시 C 로 코딩하는 느낌의 어색함과 반가움이 교차했었다. 그래도 최근 언어 답게(?) 동시성을 언어에서 go func 과 channel, select 등의 기본 스팩으로 제공한다. 하지만, class 는 없다. 상속도 없다. struct 와 receiver 라는 기능의 조합으로 구성을 해야 하는데 이..

Dev 2019.02.16

7가지 동시성 모델

[2017년 9월 13일 작성글 옮김] 얼마 전에 클로저 입문서 하나를 봐서 다행이다. 이 책에 이렇게 클로저 코드가 많이 나올 줄이야. 액터까지는 매우 공감하면서 재밌게 봤다. (이후부터 좀 어렵다.) 아카의 액터를 사용할 때 이게 얼랭에서 가져온 거라고는 알고 있었는데 실제 엘릭서 코드를 보니 또 신기하네. 실제로 돌려보면서 봤으면 더 좋았을 건데 좀 아쉽다. 특히 8장의 하둡은 개념은 얼추 알겠는데 실제 돌려봐야지 감이 오겠다. 7장의 OpenCL 10여 년 전 자막기를 개발할 때 알았으면 유용했을 것 같다. (그때도 있었나??) 조만간 업무적으로 자바 / 스프링을 만져야 하니 당분간 스프링 쪽을 봐야겠구나~ 스프링은 어디부터 봐야하나... 리디북스 : 7가지 동시성 모델 #독서 #기술서적 #추천도서

Dev 2018.12.17
반응형