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

woga·2023년 7월 16일
0

코틀린 공부

목록 보기
28/54
post-thumbnail

기업이 한 플랫폼만을 대상으로 애플리케이션을 만드는 경우는 없다. 여러 플랫폼에서 서비스와 제품이 돌아가기 때문인데 이 들은 다른 플랫폼이어도 비슷한 비즈니스 로직을 쓰이는 경우가 있다. 따라서 소스를 공유할 수 있다면 큰 이득이 발생할 것이다

풀스택 개발

많은 회사가 웹 개발을 기반으로 하는데 일반적으로 웹사이트를 제품으로 사용하며 벡엔드 애플리케이션이 필요하다
웹개발에서는 js가 독점적으로 쓰이고, 벡엔드 개발에서는 자바가 잘 쓰이고 있다. 두 언어는 굉장히 다르므로 일반적으로 벡과 웹을 분리해서 개발한다. 하지만 상황은 변할 수 있다.

바로 코틀린이 벡엔드 개발 자바의 대안이 되고 있다. 코틀린은 자바에서 가장 많이 활용되는 스프링 등의 다른 프레임워크들을 모두 사용할 수 있다. 또한 프레임워크인 Ktor도 점점 많이 사용되고 있다. 그래서 자바 벡엔드 프로젝트들이 코틀린으로 옮겨가고 있다.

코틀린의 놀라운 점 하나는 js로도 컴파일이 된다는 것이다. 코틀린을 활용해 다양한 웹 앱을 만들 수 있다. 즉, 웹 벡엔드와 프론트엔드는 모두 코틀린으로 만들 수 있다. 개발을 떠나 서로 코드도 공유할 수 있게 된다.

모바일 개발

모바일 세계에서는 더 유용하다. 안드로이드 뿐만 아니라 iOS로도 앱을 만들어야 하기 때문이다. 둘은 동일한 동작을 하고 비슷한 로직을 사용하지만 다른 tool과 언어로 개발해야 한다. 코틀린의 멀티 플랫폼 기능을 활용하면 로직을 한 번만 구현하고 두 플랫폼에서 이를 재사용할 수 있다.

공통 모듈을 만들고 여기에 다양한 비즈니스 로직을 구현하면 된다. 이때 비즈니스 로직은 프레임워크와 플랫폼에 종속되지 않고 독립적이어야 한다. 이러한 공통 로직은 처음부터 코틀린으로 직접 만들거나 다른 공통 모듈을 활용해서 만들 수 있다. 만들기만 하면 여러 플랫폼에서 사용할 수 있다.

라이브러리

공통 모듈을 정의할 수 있다는 것은 라이브러리에 있어서 강력한 도구다.

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

자바, 스칼라, 자바스크립트, 커피스크립트, 타입스크립트, C, Objective-C, 스위프츠, 파이썬, C#에서 활용 가능하다.

함께 사용하기

코틀린을 사용하면 널리 사용되는 대부분의 장치와 플랫폼을 대상으로 개발할 수 있으며, 원하는 코드들을 재사용할 수 있다.

  • 코틀린/JVM 벡엔드 - 스프링, Ktor 등

  • 코틀린/JS 웹사이트 - 리액트 등

  • 코틀린/JVM 안드 - 안드로이드 SDK 등

  • 코틀린/네이티브 Objective-C/스위프트 iOS

  • 코틀린/JVM 데스크톱 - TornadoFX 등

  • 코틀린/네이티브 라즈베리파이, 리눅스, masOS

수많은 개발자가 코드를 안전하고 효율적으로 재사용할 수 있게 하는 코드 구성 방법을 계속 고안한다. 지금까지 설명한 접근 방법도 이러한 코드 구성 방법의 예다. 공통 모듈을 사용하면 여러 플랫폼에서 코드를 재사용할 수 있다. 따라서 이러한 접근 방법은 코드를 한 번만 작성해서 공통 논리 또는 공통 알고리즘을 재사용할 수 있게 해주는 강력한 도구라고 할 수 있다.

profile
와니와니와니와니 당근당근

0개의 댓글