코틀린으로 리팩터링하기

덩컨 맥그레거, 냇 프라이스 지음

오현석 옮김

 

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

 

 

2023년 2월

2023 나는 리뷰어다 활동의 첫 번째 리뷰

 

새해 들어 첫 리뷰할 책은 "자바에서 코틀린으로" 이다.

주종목이 자바 스프링인 본인으로서는 미래를 대비해 꼭 필요한 책이라 할 수 있겠지.

그래서 리뷰를 신청하게 되었습니다?

 

2021년 2월에 처음으로 나는 리뷰어다 활동을 시작했는데, 벌써 햇수로 3년째이다.

과연 올해도 리뷰어가 될 수 있을까 싶었는데, 그래도 꾸준히 올린 덕분에 올해도 선정해 주신 것 같다.

(한빛미디어!! 항상 사랑합니다!!)

 

그렇다면 본인의 개발자 경력도 그렇다는 이야기인데... 과연 내가 3년 차 개발자인가 싶다.

 

아무튼. 리뷰를 시작해 보자.

 

"이 책은 코틀린을 써서 컴퓨터 프로그래밍을 짜는 방법을 가르쳐주지 않는다."

 

이 책을 공부하고자 하는 개발자님이시라면 책의 목적이 이렇다는 것을 알아야 한다.

 

이 책은 기존 자바 코드를 코틀린으로 변환하면서 코틀린 언어를 가르쳐주고, 기존 자바와 코딩 지식을 활용해 더 빠르게 코틀린을 채택하고 싶어 하는 자바팀을 위해 고안된 책이다.

 

동기가 충분하고 경험이 많은 자바 개발자는 대부분 코틀린 언어의 기능을 아주 빠르게 배울 수 있다고 저자는 생각하고 있다.

이 책은 코틀린의 장점을 살릴 수 있도록 사고방식과 설계방식을 조정하도록 돕고, 자바식 사고방식의 코드를 코틀린식 사고방식의 코드로 마이그레이션 하는 방법을 보여주는 책이다.

 

책이 어떻게 구성되어 있는지 보자.

전형적인 자바 프로젝트의 몇 가지 측면을 어떻게 개선할 수 있는지를 살펴보며,

'자바의 방식'에서 '코틀린의 방식'으로라는 패턴의 제목으로 정리한다.

 

코틀린을 사용하면 자바에서 사용하기 힘든 접근 방법을 쉽게 쓸 수 있게 하거나 자바에서는 흔히 사용되는 접근 방법을 사용하지 않게 권장함으로써, 여러분의 설계를 실수할 여지가 더 적고, 더 간결하며, 더 도구 사용에 유리한 방향으로 이끌어 준다.

 

결국엔 안전하면서도 두 언어가 섞인 코드 기반을 계속 유지해 나갈 방법을 사용해 점진적으로 자바를 코틀린으로 리팩터링 한다.

 

목차를 정리해 보자.

 

1 소개
2 자바 프로젝트에서 코틀린 프로젝트로
3 자바 클래스에서 코틀린 클래스로
4 옵셔널에서 널이 될 수 있는 타입으로
5 빈에서 값으로
6 자바에서 코틀린 컬렉션으로
7 동작에서 계산으로
8 정적 메서드에서 최상위 함수로
9 다중식 함수에서 단일식 함수로
10 함수에서 확장 함수로
11 메서드에서 프로퍼티로
12 함수에서 연산자로
13 스트림에서 이터러블이나 시퀀스로
14 누적시키는 객체에서 변환으로
15 캡슐화한 컬렉션에서 타입 별명으로
16 인터페이스에서 함수로
17 목에서 맵으로
18 열린 클래스에서 봉인된 클래스로
19 예외 던지기에서 값 반환으로
20 I/O 수행에서 데이터 전달로
21 예외에서 값으로
22 클래스에서 함수로
23 여행은 계속된다

 

자바의 방식에서 코틀린의 방식으로 라는 패턴의 제목으로 정리되어 있으며, 자바개발자라면 친숙한 용어들이 나열되어 있다.

 

자바에서 코틀린으로 넘어가는 개발자들은 코틀린을 대충 살펴보고는 쉬운 언어라고 생각하고, 코틀린 문법으로 작성한 자바 코드를 작성하기 쉽니다. 하지만 코틀린의 결에 맞게 코드를 작성하면 전통적인 자바 객체 지향 코드보다 더 안전하고, 유지 보수하기 쉽고, 더 간결하면서 보기 좋은 코드를 작성할 수 있다.

 

이 책을 통해, 자바식 사고방식과 다른 코틀린식 사고방식을 접하고 얻어갈 수 있다면 이 책을 읽는 개발자에게 큰 도움이 될 수 있는 책이다.

 

코틀린을 공부하고자 하는 자바 개발자분들이여. 이 책은 꼭 거쳐가도록 하자.

 

코틀린의 결을 얻어 갈 때까지.

 

Love Yourself.

애플리케이션의 배포와 운영을 고려한 7가지 설계 패턴

카순 인드라시리, 스리스칸다라자 수호타얀 지음

박수현 옮김

 

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

 

2022년 12월

2022 나는 리뷰어다 활동의 아홉 번째 리뷰

 

12월에 리뷰할 책은 "클라우드 네이티브 애플리케이션 디자인 패턴"이다.

벌써 2022 나는 리뷰어다 활동도 마지막 12월이 되었다.

 

2022년 한해는 이직후로 굉장히 바쁘게 1년을 보낸 것 같다.

(하지만 지금 또 다시 이직 준비중이다.)

 

더 실력있는 개발자가 되자라고 다짐했었는데 그만큼 노력을 많이 하지 않은 것 같아 후회도 많이 남는 2022년이다.

 

아무튼 리뷰를 시작해보자.

 

우선, 클라우드 네이트브 아키텍처란 무엇일까?

비즈니스 기능별로 독립적인 마이크로서비스들이 느슨하게 결합된 소프트웨어 애플리케이션을 통칭하는 말이다.

각 마이크로서비스는 각각의 실행 환경(퍼블릭, 프라이빗, 하이브리드, 멀티클라우드)에서 실행되며 자동화되고 확장성을 지원하며 탄력적인 관리 및 관찰을 제공한다.

 

클라우드 환경은 민첩함과 신뢰성, 경제성, 확장성이라는 장점 덕분에 클라우드 네이티브 애플리케이션 개발이 점점 더 각광받고 있다. 최근 애플리케이션의 배포 및 운영에 대한 관심이 늘어나면서 기존의 개발 패턴이나 기술을 적용하기는 힘든 상황이 되고 있다.

 

이 책에서는 이런 문제점들을 API와 데이터, 이벤트, 스트림 기반 패턴을 통해 해결해볼 것이다. 이 방법들을 통해 클라우드 네이티브 애플리케이션의 목적에 맞게 설계하고 개발하고 배포할 수 있으며 최소의 비용과 시간, 노력으로 애플리케이션을 관리하고 유지보수 할 수 있다.

 

클라우드와 클라우드를 기반으로 하는 네이티브 애플리케이션은 변화 속도가 굉장히 빠르다.

기존의 상업 애플리케이션 뿐만 아니라 ML, AI와 같이 새롭게 각광 받는 분야의 애플리케이션들 역시 클라우드 기반으로 개발하면서 다양한 도메인들이 클라우드로 쏟아져 들어오는 상황이다.

 

이런 상황에서 개발하고자 하는 애플리케이션에 적합한 구조나 메시지큐, 데이터베이스 등을 선택하는 것조차 매우 어렵다.

 

클라우드 네이티브 애플리케이션은 다양한 디자인 패텬을 통해 구성하고 개발할 수 있다. 이 책에서는 주로 클라우드 네이티브 애플리케이션의 비즈니스 로직을 만들 때 반드시 적용해야 할 개발패턴을 살펴본다.

 

또한, 이 책은 클라우드 네이티브 애플리케이션을 개발하거나, 혹은 기존의 애플리케이션을 클라우드 네이티브로 전환하고자 할 때 어떤 기술 스택을 사용하고 어떤 구조를 사용할 것인지에 대한 전반적인 방향을 제시해 줄 수 있다. AWS나 Azure, GCP와 같은 퍼블릭 클라우드 환경뿐 아니라 온프레미스 환경에서도 사용할 수 있는 다양한 구조와 그에 잘 맞는 소프트웨어 및 애플리케이션을 소개한다.

 

목차를 살펴보자.

 

1장. 클라우드 네이티브란?

2장. 통신 패턴

3장. 연결 및 구성 패턴

4장. 데이터 관리 패턴

5장. 이벤트 기반 아키텍처 패턴

6장. 스트림 처리 패턴

7장. API 관리 및 사용 패턴

8장. 실례로 살펴보는 클라우드 네이티브 패턴

 

으로 구성이 되어 있다.

 

애플리케이션의 특성에 따라, 그리고 개발할 때 사용하는 패턴에 따라 배포나 확장성, 보안, 관측, 가능성 구현이 서로 다를 수 있다. 이런 다양한 패턴이 서로 어떤 차이가 있는지, 장단점은 무엇인지 생각하면서 이 책을 보면 좋을것이다.

 

Love Yourself.

클라우드 시대의 코드형 인프라(IaC)와 데브옵스 완벽 가이드

키프 모리스 지음

이동규 옮김

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

 

2022년 9월

2022 나는 리뷰어다 활동의 여덟 번째 리뷰

 

9월에 리뷰할 책은 "코드로 인프라 관리하기"이다.

 

우선 옮긴이가 꼭 전달하고 싶은 책의 일부를 보자

 

"애자일 소프트웨어 개발과 코드형 인프라의 핵심은 변경에 대한 태도를 뒤집는 것이다. 변경을 두려워하거나 변경을 최소화하기보다는 자주 변경함으로써 오류를 예방할 수 있다. 변경을 더 잘하는 유일한 방법은 자주 변경하여 시스템과 프로세스를 지속적으로 개선하는 것이다."

 

저자는 '속도를 빠르게 하여 품질을 향상시키고 품질을 향상시켜 속도를 빠르게 한다'를 강조한다.

가장 높은 수준의 데브옵스란 인프라 코드가 애플리케이션 코드와 결합하여 빠르고 안전하게 변경을 실행하고 언제든지 전체 시스템을 복구할 수 있는 상태라고 생각한다.

 

저자와 옮긴이의 기조를 생각하며 책을 읽어나가야 한다.

 

코드형 인프라라는 용어는 무엇인가?

오래전부터 시스템 관리자는 시스템을 관리하기 위해 스크립트를 사용했고, 코드형 인프라는 데브옵스 움직임과 함께 성장했다. 2009년 애자일 인프라라는 강연에서 코드형 인프라 용어가 사용되었고 이 책에까지 이르고 있다.

 

그럼 이 책의 세 가지 핵심 실행 방법을 보자.

 

1. 모든 것을 코드로 정의한다

2. 코드를 지속적으로 테스트하고 딜리버리 한다

3. 시스템을 작고 간단하게 빌드한다.

 

이 세 가지 실행 방법은 서로를 보강하며, 코드는 변경 관리의 여러 단계에서 추적, 버저닝, 배포를 용이하게 한다. 이를 통해 팀은 더 쉽게 더 작은 부분을 지속적으로 테스트할 수 있는 것이다.

 

이 책의 대상 독자는 소프트웨어 배포와 실행에 필요한 인프라를 프로비저닝하고 관리하는 사람으로 팀에서 엔지니어링, 테스트, 설계, 관리자 역할을 맡은 경우다. 시스템, 인프라 또는 소프트웨어 배포와 실행 관련 배경지식이 필요하며, 인프라 자동화를 위해 코드를 사용하는 클라우드나 가상 인프라에 대한 경험이 있다고 가정한다.

 

결국 이 책은 숙련된 실무자와 팀이 효율적인 방법으로 공통 언어를 만들고 인프라 자동화에 도전하는 과정에서 찾은 해결 방법을 명확하게 설명한다. 이 책을 통해 많은 엔지니어들은 시스템과 프로세스 구현의 밑거름을 얻어갈 수 있을 것이다.

 

Love Yourself.

+ Recent posts