본문 바로가기
Kotlin

[Effective Kotlin] 25 - 공통 모듈을 추출해서 여러 플랫폼에서 재사용하라

by 매운돌 2023. 7. 15.

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

네트워크 호출을 통해 통신하는 클라이언트와 서버 애플리케이션을 생각해보면, 두 애플리케이션은 서로 소통하므로 재사용할 수 있는 부분이 더 많을 것입니다.

 

풀스택

많은 회사가 웹 개발을 기반으로 합니다. 일반적으로 웹사이트를 제품으로 사용하며, 백엔드 애플리케이션(서버 측)이 필요합니다. 웹사이트 개발에서는 거의 JavaScript가 사용되고 있고 백엔드에서는 주로 Java가 사용되고 있습니다. 그리고 두 언어는 굉장히 다르므로, 일반적으로 백엔드와 웹은 분리해서 개발합니다.

하지만 Kotlin은 백엔드 개발을 위한 자바의 인기 있는 대안이 되고 있습니다. 예를들어 Kotlin은 Java에서 가장 많이 활용되는 Spring등의 다른 프레임워크들을 모두 사용할 수 있습니다. 또한 Kotlin은 백엔드 프레임워크인 Ktor도 점점 많이 사용되고 있습니다.

그리고 Kotlin의 굉장한 점 중 하나는 JavaScript로 컴파일 될 수 있다는 것입니다. 이미 많은 Kotlin/JS 라이브러리가 있으며, Kotlin을 활용해 다양한 웹 애플리케이션을 만들 수 있습니다. 예를 들어 React 프레임워크와 Kotlin/JS를 함께 사용해서 웹 플런트엔드를 만들 수도 있습니다.

즉 웹 백엔드와 프런트엔드를 모두 Kotlin으로 만들 수 있다는 것입니다. 이는 단순하게 만들 수 있다는 개념을 떠나서, 서료 코드를 공유할 수 있다는 의미입니다.

 

모바일 개발

일반적으로 Android 애플리케이션과 iOS 애플리케이션은 거의 대부분 동일한 동작을 하고, 내부적으로 비슷한 로직을 사용하지만, 다른 언어와  도구를 사용해서 따로 개발해야 합니다.

Kotlin의 멀티 플랫폼 기능을 활용하면 로직을 한 번만 구현하고, 두 플랫폼에서 이를 재사용할 수 있습니다.공통 모듈을 만들고, 여기에 다양한 비즈니스 로직을 구현하면 됩니다. 그런데 이때 비즈니스 로직은 프레임워크와 플랫폼에 종속되지 않고, 독립적이어야 합니다.

Android의 경우 Gradle을 사용해서 동일한 방법으로 만들어지므로 직접 사용할 수 있습니다. 따라서 굉장히 쉽게 공통 모듈을 활용할 수 있습니다. 

iOS의 경우 LLVM을 사용하여 네이티브 코드로 컴파일할 수 있는 Kotlin/네이티브를 사용하면 Objective-C 프레임워크로 변환할 수 있습니다. 이렇게 변환하면 XCode 또는 AppCode에서 스위프트로 활용할 수 있습니다.

 

라이브러리

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

(따라서 Java, Scalar, JavaScript, TypeScript, C, Objective-C, Swift, Python, C#에서 활용할 수 있습니다.)

 

함께 사용하기

Kotlin을 사용하면 널리 사용되는 대부분의 장치와 플랫폼을 대상으로 개발 할 수 있으며, 원하는 코드들을 재사용할 수 있습니다. 아래는 Kotlin으로 작성할 수 있는 것들의 예를 간단하게 설명해 보겠습니다.

  • Kotlin/JVM을 사용한 백엔드 개발 - Spring, Ktor
  • Kotlin/JS를 사용한 웹사이트 개발 - React
  • Kotlin/JVM을 사용한 안드로이드 개발 - 안드로이드 SDK 등
  • Kotlin/네이티브를 통해 Objective-C/Swift로 iOS 프레임워크 개발
  • Kotlin/JVM을 사용한 Desktop 개발 - TornadoFX 등
  • Kotlin/네이티브를 사용한 라즈베리파이, 리눅스, macOS 프로그램 개발