관리 메뉴

나만을 위한 블로그

[이펙티브 코틀린] 아이템 25. 공통 모듈을 추출해서 여러 플랫폼에서 재사용하라 본문

책/Effective Kotlin

[이펙티브 코틀린] 아이템 25. 공통 모듈을 추출해서 여러 플랫폼에서 재사용하라

참깨빵위에참깨빵_ 2022. 11. 9. 23:56
728x90
반응형

기업이 한 플랫폼만을 대상으로 앱을 만드는 경우는 없다. 기업은 일반적으로 둘 이상의 플랫폼을 대상으로 하는 제품을 만들기 원하며 요즘 대부분 기업의 제품, 서비스는 여러 플랫폼에서 돌아가고 있다.

네트워크 호출을 통해 통신하는 클라이언트, 서버 앱을 생각해라. 두 앱은 서로 소통하므로 재사용할 수 있는 부분이 많을 것이다. 다른 플랫폼에 동일한 제품을 구현한다면 재사용할 수 있는 부분이 많을 것이다. 특히 비즈니스 로직 부분들은 거의 동일하다. 따라서 소스코드를 공유할 수 있다면 큰 이득이 발생할 것이다.

 

풀스택 개발

 

일반적으로 웹 사이트를 제품으로 사용하며 백엔드 애플리케이션(서버 측)이 필요하다. 웹 사이트 개발에선 자바스크립트 이외의 선택지는 없을 정도로 독점적으로 사용되고 있다. 백엔드에서 가장 인기 있는 선택지는 자바다. 두 언어는 굉장히 다르므로 일반적으로 백엔드, 웹은 분리해서 개발한다. 하지만 상황은 변할 수 있다. 코틀린은 백엔드 개발을 위한 자바의 인기 있는 대안이 되고 있다. 코틀린 백엔드 프레임워크인 Ktor도 점점 많이 쓰이고 있다. 그래서 최근 들어 많은 자바 백엔드 프로젝트들이 코틀린으로 이동하는 것이다.

코틀린의 굉장한 점 중 하나는 코틀린이 자바스크립트로 컴파일될 수 있다는 것이다. 이미 많은 코틀린/JS 라이브러리가 있으며 코틀린을 활용해 다양한 웹 앱을 만들 수 있다. 리액트와 코틀린/JS를 함께 써서 웹 프론트엔드를 만들 수도 있다. 즉 웹 백엔드와 프론트엔드를 모두 코틀린으로 만들 수 있다는 것이다. 이는 단순하게 만들 수 있다는 개념을 떠나 서로 코드를 공유할 수도 있다는 의미다. 따라서 공통 코드, API 엔드포인트 정의, 추상화 등을 재사용할 수 있다.

 

모바일 개발

 

일반적으로 안드로이드, iOS 앱은 거의 대부분 동일한 동작을 하고 내부적으로 비슷한 로직을 쓰지만 다른 언어, 도구를 써서 개발해야 한다. 코틀린의 멀티 플랫폼 기능을 활용하면 로직을 한 번만 구현하고 두 플랫폼에서 이를 재사용할 수 있다. 공통 모듈을 만들고 여기에 다양한 비즈니스 로직을 구현하면 된다. 이 때 비즈니스 로직은 프레임워크, 플랫폼에 종속되지 않고 독립적이어야 한다. 이런 공통 로직은 처음부터 코틀린으로 직접 만들거나 다른 공통 모듈을 써서 만들 수 있다.

안드로이드의 경우 gradle을 써서 동일한 방법으로 만들어지므로 직접 사용할 수 있다. 따라서 굉장히 쉽게 공통 모듈을 활용할 수 있다. iOS는 LLVM을 써서 네이티브 코드로 컴파일할 수 있는 코틀린/네이티브를 쓰면 Objective-C 프레임워크로 변환할 수 있다. 이렇게 변환하면 XCode 또는 AppCode에서 스위프트로 활용할 수 있다.

 

라이브러리

 

공통 모듈을 정의할 수 있다는 건 라이브러리에 있어서 강력한 도구다. 특히 플랫폼에 크게 의존하지 않는다는 점은 공통 모듈을 JVM, 자바스크립트, 네이티브 환경에서 작동하는 모든 언어에서 활용할 수 있다는 의미다.

반응형
Comments