팀에 멀티플랫폼 모바일 개발을 도입하는 방법
조직에 새로운 기술과 도구를 구현하는 것은 도전 과제를 수반합니다. 워크플로를 최적화하고 간소화하기 위해 팀이 모바일 앱 개발을 위한 다중 플랫폼 접근 방식을 채택하도록 어떻게 도울 수 있을까요? 다음은 개발자가 네이티브 프로그래밍의 이점을 유지하면서 플랫폼 간에 코드를 공유할 수 있게 해주는 JetBrains가 구축한 오픈 소스 기술인 코틀린 멀티플랫폼(KMP)을 팀에 효과적으로 소개하는 데 도움이 되는 몇 가지 권장 사항 및 모범 사례입니다.
- 공감으로 시작하기
- 코틀린 멀티플랫폼 작동 방식 설명
- 사례 연구를 활용하여 멀티플랫폼 개발의 가치 입증
- 샘플 프로젝트를 만들어 증명
- 팀의 멀티플랫폼 개발 관련 질문에 대비
- 적응 기간 동안 팀 지원
공감으로 시작하기
소프트웨어 개발은 팀 게임이며, 모든 중요한 결정은 모든 팀 구성원의 승인을 필요로 합니다. 어떤 크로스 플랫폼 기술이든 통합하는 것은 모바일 애플리케이션의 개발 프로세스에 상당한 영향을 미칠 것입니다. 따라서 코틀린 멀티플랫폼을 프로젝트에 통합하기 전에 팀에 기술을 소개하고 이를 채택할 가치가 있음을 부드럽게 안내해야 합니다.
프로젝트에 참여하는 사람들을 이해하는 것이 성공적인 통합의 첫 단계입니다. 상사는 최단 시간 내에 최고의 품질로 기능을 제공할 책임이 있습니다. 상사에게 새로운 기술은 위험입니다. 동료들도 다른 관점을 가지고 있습니다. 그들은 "네이티브" 기술 스택으로 앱을 구축한 경험이 있습니다. 그들은 UI와 비즈니스 로직을 작성하고, 종속성을 다루고, IDE에서 코드를 테스트하고 디버깅하는 방법을 알고 있으며, 이미 해당 언어에 익숙합니다. 다른 에코시스템으로 전환하는 것은 항상 불편합니다. 익숙한 영역을 벗어나는 것을 의미하기 때문입니다.
이 모든 것을 고려할 때, 코틀린 멀티플랫폼으로의 전환을 지지할 때 많은 편견에 직면하고 많은 질문에 답할 준비를 하십시오. 그 과정에서 팀의 요구 사항을 항상 염두에 두십시오. 아래의 조언 중 일부는 발표 준비에 유용할 수 있습니다.
코틀린 멀티플랫폼 작동 방식 설명
이 단계에서는 코틀린 멀티플랫폼을 사용하면 프로젝트에 가치를 가져올 수 있으며, 팀이 가지고 있을 수 있는 크로스 플랫폼 모바일 애플리케이션에 대한 편향된 의견과 의심을 없앨 수 있음을 보여줄 필요가 있습니다.
KMP는 알파(Alpha) 출시 이후 프로덕션 환경에서 널리 사용되어 왔습니다. 그 결과, JetBrains는 광범위한 피드백을 수집하여 안정화 버전에서 훨씬 더 나은 개발 경험을 제공할 수 있었습니다.
- 모든 iOS 및 안드로이드 기능 사용 가능 – 공유 코드에서 작업을 수행할 수 없거나 특정 네이티브 기능을 사용하고 싶을 때, expect/actual 패턴을 사용하여 플랫폼별 코드를 원활하게 작성할 수 있습니다.
- 원활한 성능 – 코틀린으로 작성된 공유 코드는 다양한 타겟에 대해 다른 출력 형식으로 컴파일됩니다: 안드로이드용 자바 바이트코드와 iOS용 네이티브 바이너리. 따라서 플랫폼에서 이 코드를 실행할 때 추가적인 런타임 오버헤드가 없으며, 성능은 네이티브 앱과 비교할 만합니다.
- 레거시 코드 호환성 – 프로젝트 규모와 관계없이 기존 코드가 코틀린 멀티플랫폼 통합을 막지 않습니다. 언제든지 크로스 플랫폼 코드 작성을 시작하여 일반적인 종속성으로 iOS 및 안드로이드 앱에 연결하거나, 이미 작성한 코드를 사용하여 iOS와 호환되도록 수정할 수 있습니다.
기술이 어떻게 작동하는지 설명할 수 있는 것은 매우 중요합니다. 아무도 논의가 마법에 의존하는 것처럼 보이는 것을 좋아하지 않기 때문입니다. 명확하지 않은 부분이 있다면 사람들이 최악의 상황을 상상할 수 있으므로, 너무 명백하다고 생각하여 설명을 생략하는 실수를 하지 않도록 주의하십시오. 대신, 다음 단계로 넘어가기 전에 모든 기본 개념을 설명하려고 노력하십시오. 다중 플랫폼 프로그래밍에 대한 이 문서는 이 경험을 준비하기 위해 지식을 체계화하는 데 도움이 될 수 있습니다.
사례 연구를 활용하여 멀티플랫폼 개발의 가치 입증
다중 플랫폼 기술이 어떻게 작동하는지 이해하는 것은 필요하지만, 그것만으로는 충분하지 않습니다. 팀은 이를 사용하는 이점을 볼 필요가 있으며, 이러한 이점을 제시하는 방식은 제품과 관련되어야 합니다.
이 단계에서는 코틀린 멀티플랫폼을 제품에 사용하는 주요 이점을 설명해야 합니다. 한 가지 방법은 크로스 플랫폼 모바일 개발로 이미 이점을 얻고 있는 다른 회사의 사례를 공유하는 것입니다. 특히 유사한 제품 목표를 가진 팀들의 성공적인 경험은 최종 결정의 핵심 요소가 될 수 있습니다.
이미 프로덕션 환경에서 코틀린 멀티플랫폼을 사용하는 다양한 회사의 사례 연구를 인용하면 설득력 있는 주장을 펼치는 데 크게 도움이 될 수 있습니다.
- McDonald's – 맥도날드는 글로벌 모바일 앱에 코틀린 멀티플랫폼을 활용하여 플랫폼 간에 공유될 수 있는 코드베이스를 구축함으로써 코드베이스 중복의 필요성을 없앴습니다.
- Netflix – 넷플릭스는 코틀린 멀티플랫폼의 도움을 받아 제품 안정성과 배포 속도를 최적화하고 있으며, 이는 고객의 요구 사항을 충족하는 데 중요합니다.
- Forbes – 포브스는 iOS와 안드로이드 간에 80% 이상의 로직을 공유함으로써, 이제 양쪽 플랫폼에 새로운 기능을 동시에 출시하면서 플랫폼별 맞춤화에 대한 유연성을 유지하고 있습니다.
- 9GAG – 플러터(Flutter)와 리액트 네이티브(React Native)를 모두 시도한 후, 9GAG는 코틀린 멀티플랫폼을 점진적으로 채택했으며, 이는 현재 사용자에게 일관된 경험을 제공하면서 기능을 더 빠르게 출시하는 데 도움을 줍니다.
샘플 프로젝트를 만들어 증명
이론은 좋지만, 궁극적으로는 실천이 가장 중요합니다. 주장을 더 설득력 있게 만들고 멀티플랫폼 모바일 앱 개발의 잠재력을 보여줄 한 가지 방법으로, 시간을 할애하여 코틀린 멀티플랫폼으로 무언가를 만들고 그 결과를 팀이 논의할 수 있도록 가져오는 것입니다. 여러분의 프로토타입은 어떤 종류의 테스트 프로젝트가 될 수 있으며, 처음부터 작성하고 애플리케이션에 필요한 기능을 시연할 수 있습니다. Ktor와 SQLDelight를 사용하여 멀티플랫폼 앱 만들기 – 튜토리얼이 이 과정을 잘 안내합니다.
현재 프로젝트를 가지고 실험하여 더 관련성 높은 예시를 만들 수 있습니다. 코틀린으로 구현된 기존 기능 하나를 가져와 크로스 플랫폼으로 만들거나, 기존 프로젝트에 새로운 멀티플랫폼 모듈을 생성하여, 백로그 하단에 있는 우선순위가 낮은 기능을 가져와 공유 모듈에 구현할 수도 있습니다. 안드로이드 애플리케이션을 iOS에서 작동시키기 – 튜토리얼은 샘플 프로젝트를 기반으로 단계별 가이드를 제공합니다.
팀의 멀티플랫폼 개발 관련 질문에 대비
발표가 아무리 상세하더라도 팀은 많은 질문을 할 것입니다. 주의 깊게 듣고 모든 질문에 인내심을 가지고 답하십시오. 질문의 대부분은 iOS 팀에서 나올 것으로 예상할 수 있습니다. 그들은 일상적인 개발 루틴에서 코틀린을 보는 데 익숙하지 않은 개발자들이기 때문입니다. 다음은 가장 일반적인 질문 목록으로, 도움이 될 수 있습니다.
Q: 크로스 플랫폼 기술 기반 앱이 앱 스토어에서 거부될 수 있다고 들었습니다. 이 위험을 감수할 가치가 있나요?
A: 애플 앱 스토어는 앱 게시를 위한 엄격한 지침을 가지고 있습니다. 한 가지 제한 사항은 앱이 앱의 기능을 도입하거나 변경하는 코드를 다운로드, 설치 또는 실행할 수 없다는 것입니다(앱 스토어 심사 지침 2.5.2). 이는 일부 크로스 플랫폼 기술에는 관련이 있지만, 코틀린 멀티플랫폼에는 해당되지 않습니다. 공유 코틀린 코드는 Kotlin/Native를 통해 네이티브 바이너리로 컴파일되고, 일반적인 iOS 프레임워크를 앱에 번들하며, 동적 코드 실행 기능을 제공하지 않습니다.
Q: 멀티플랫폼 프로젝트는 Gradle로 빌드되는데, Gradle은 학습 곡선이 매우 가파릅니다. 이것이 이제 프로젝트를 구성하는 데 많은 시간을 할애해야 한다는 의미인가요?
A: 그럴 필요 없습니다. 코틀린 모바일 애플리케이션 빌드를 중심으로 작업 프로세스를 구성하는 다양한 방법이 있습니다. 첫째, 안드로이드 개발자만 빌드를 담당할 수 있으며, 이 경우 iOS 팀은 코드만 작성하거나 결과 아티팩트(artifact)만 사용할 수 있습니다. Gradle 작업이 필요한 작업을 다룰 때 워크숍을 개최하거나 페어 프로그래밍을 연습할 수도 있으며, 이는 팀의 Gradle 기술을 향상시킬 것입니다. 멀티플랫폼 프로젝트를 위한 팀워크 구성의 다양한 방법을 탐색하고 팀에 가장 적합한 방법을 선택할 수 있습니다.
팀의 안드로이드 부분이 공유 코드 작업을 할 때는 iOS 개발자가 코틀린을 배울 필요조차 없습니다. 그러나 팀이 모든 사람이 공유 코드에 기여하는 다음 단계로 넘어갈 준비가 되면 전환에 많은 시간이 걸리지 않을 것입니다. 스위프트(Swift)와 코틀린의 문법 및 기능 간의 유사성은 공유 코틀린 코드를 읽고 쓰는 방법을 배우는 데 필요한 작업을 크게 줄여줍니다. 코틀린 코안스(Kotlin Koans)로 직접 시도해보세요. 코틀린 문법 및 일부 관용구에 익숙해지도록 돕는 일련의 연습 문제입니다.
2023년 말, JetBrains는 사용성, 온보딩, IDE 지원에 중점을 둔 새로운 실험적인 프로젝트 구성 도구인 앰퍼(Amper)를 소개했습니다. 앰퍼의 기능에 대한 더 많은 통찰력을 얻으려면 튜토리얼을 살펴보십시오.
Q: 코틀린 멀티플랫폼은 프로덕션 준비가 되었나요?
A: 2023년 11월, 코틀린 멀티플랫폼이 이제 안정화되었음을 발표했으며, 이는 이제 프로덕션 환경에서 사용하기에 완전히 준비되었음을 의미합니다.
Q: 앱의 비즈니스 로직을 구현할 멀티플랫폼 라이브러리가 충분하지 않고, 네이티브 대안을 찾는 것이 훨씬 쉽습니다. 왜 코틀린 멀티플랫폼을 선택해야 하나요?
A: 코틀린 멀티플랫폼 생태계는 번성하고 있으며 전 세계의 많은 코틀린 개발자들이 가꾸고 있습니다. 수년간 KMP 라이브러리 수가 얼마나 빠르게 증가해왔는지 살펴보십시오.
코틀린 멀티플랫폼 오픈 소스 커뮤니티에서 iOS 개발자가 되기에도 아주 좋은 시기입니다. iOS 경험이 수요가 많고 iOS 관련 기여로 인정받을 수 있는 많은 기회가 있기 때문입니다.
팀이 멀티플랫폼 모바일 개발을 더 깊이 파고들수록 질문은 더 흥미롭고 복잡해질 것입니다. 답을 가지고 있지 않더라도 걱정하지 마세요. 코틀린 멀티플랫폼에는 코틀린 슬랙(Kotlin Slack)에 크고 지원적인 커뮤니티가 있으며, 전용 #multiplatform 채널에서 이미 이를 사용하는 많은 개발자들이 도움을 줄 수 있습니다. 팀에서 가장 많이 받은 질문들을 우리와 공유해주시면 매우 감사하겠습니다. 이 정보는 문서에 어떤 주제를 다룰 필요가 있는지 이해하는 데 도움이 될 것입니다.
적응 기간 동안 팀 지원
코틀린 멀티플랫폼 사용을 결정한 후에는 팀이 기술을 실험하는 적응 기간이 있을 것입니다. 그리고 여러분의 임무는 아직 끝나지 않습니다! 팀원들에게 지속적인 지원을 제공함으로써, 팀이 기술에 몰입하고 첫 성과를 달성하는 데 걸리는 시간을 줄여줄 것입니다.
이 단계에서 팀을 지원할 수 있는 몇 가지 팁은 다음과 같습니다.
- 이전 단계에서 받은 질문들을 "코틀린 멀티플랫폼: 자주 묻는 질문" 위키 페이지에 모아 팀과 공유하십시오.
#kotlin-multiplatform-support
슬랙 채널을 만들고 그곳에서 가장 활동적인 사용자가 되십시오.- 팝콘과 피자를 곁들인 비공식 팀 빌딩 이벤트를 주최하여 코틀린 멀티플랫폼에 대한 교육적이거나 영감을 주는 비디오를 시청하십시오. 다음은 좋은 비디오 선택입니다.
현실적으로 하루나 일주일 만에 사람들의 마음을 바꿀 수는 없을 것입니다. 그러나 동료들의 요구에 대한 인내심과 세심함은 의심할 여지 없이 좋은 결과를 가져올 것입니다.
JetBrains 팀은 코틀린 멀티플랫폼 경험에 대한 여러분의 이야기를 듣기를 기대합니다.
이 글 작성에 도움을 주신 Touchlab 팀에 감사드립니다.