통조림

[안드로이드 컨퍼런스] Native vs Flutter 그리고 KMP 컨퍼런스 참여소감 본문

Software

[안드로이드 컨퍼런스] Native vs Flutter 그리고 KMP 컨퍼런스 참여소감

고랭지참치 2024. 4. 8. 09:29

지난주 토요일에 강남 마루180에서 진행하는 안드로이드 컨퍼런스에 다녀왔다. Flutter가 네이티브와 대결구도를 가질만큼 성장했다는 생각이 들어 더 흥미가 가는 컨퍼런스였고 발표자 중 한분인 박상권님에 대해 좋은 경험을 가진 주변 개발자분들이 계셔 가봐야겠다는 생각이 들었다.(행사도 박상권님이 주최하신 것이었다)

행사에 참여하여 들었던 내용을 내 머리속 언어로 다시 정리하고 각 발표에 대해 나만의 결론을 내어 정리해 놓고자 한다.


행사 정보 및 발표자 소개

[안드로이드 컨퍼런스] Native vs Flutter 그리고 KMP - 이벤터스

행사 시작 직전 ‘자신이 사용하는 기술 스텍’ 투표 결과

생각보다 Flutter 비율이 높아서 놀랐다.

시작 전 소감

  • 마루 180 이벤트홀의 자리는 약 80석 정도 되어 보였는데 대충 봐도 120명 정도되는 많은 개발자들이 참여했다.
  • Jet brains 본사에서 직접 행사에 와서 KMP를 홍보하고 이런저런 지원에 대해 약속하는 만큼 KMP 사용 활성화에 적극적이라고 느껴짐
    • 참여한 개발자 중 KMP를 아는 사람은 10명 남짓, 실제 사용해보았다에 손을 든 사람은 3명 뿐이었다.

첫번째 세션

[Native vs Flutter] Flutter가 몸에 좋은 이유 _ 개발자 건강을 위한 최고의 방법.pdf


💡 **Flutter가 몸에 좋은 이유: 개발자 건강을 위한 최고의 방법**

양수장

작업량 감소와 스트레스 감소.

  • 일을 한다 → 스트레스 받는다 → 건강악화
    • Flutter → 일을 덜 한다 → 스트레스를 덜 받는다 → 건강
  • 선언형 UI가 최근 핫하다
    • Swift UI, Flutter, compose
  • Multi Use
    • Android, IOS, Web, Linux, Desktop
  • 2018년에 Dart가 최초에 나왔을때, 웹 JS 체제를 대체할 수 있도록 만든 언어였다.
    • 웹쪽 개발자들의 반발이 매우 심했다.
    • 2018년 배우기 최악의 언어 1위가 Dart
  • Flutter는 지속적인 커뮤니티 활성화가 핵심성장 원동력이었다.

 

첫번째 세션 소결론

  • 모두에게 비판받는 기술에서 주류로 인정받기까지 많은 지원과 활동이 있어야 했다.



두번째 세션

💡 **코틀린으로 멀티플랫폼 만들기**

유광무

코틀린 멀티플랫폼이란?

  • KMP // KMM이란 명칭은 Deprecated됨
  • 코틀린 코드를 여러 플랫폼에서 사용 가능

컴포즈 멀티플랫폼이란?

  • 공통 로직까지만 공유하고 싶다면 KMP
    • 클린아키텍쳐라면 데이터 레이어, 도메인 레이어 등등
  • UI 코드까지 공유하고 싶다면 Compose 사용

KMP만의 특별한 점

  • 코틀린으로 네이티브 접근
    • IOS의 경우 Apple Framework Wrapping된 함수로 제공
    • 구현되어있지 않은 함수들은 interop을 사용해서 우회가능
  • 각 플랫폼별 사용하고 있던 라이브러리들을 대부분 그대로 KMP에서 사용할 수 있다.
    • BUT, 플랫폼별로 상이한 제한사항.

백앤드에서 만든 데이터 모델을 그대로 사용 가능

  • 코프링과 KMP 사용하면 효율적으로 작업할 수 있다.

기존 크로스플랫폼과 방향성이 다르다

  • 기존 Flutter, RN은 브릿지, 채널을 통해서 네이티브랑 소통
  • KMP는 라이브러리로서 사용가능하다.
    • IOS는 아직 알파 단계 (쩝..)

 

두번째 세션 소결론

  • Flutter 1.0 처럼 시험단계임
  • 코틀린 언어로 모든걸 할 수 있다는 것은 아주 매력적으로 보이나, 타사 플랫폼 호환성에 대한 디버깅 이슈와 유지보수 문제는 Flutter와 동일해 보임.
  • Flutter에서도 각 OS Native기능을 사용하기 위한 Wrapping 메소드들을 다양한 라이브러리들에서 제공해주고 있다. KMP도 OS별 Native Wrapping 메소드들을 커뮤니티에서 제작해주기를 기다리거나 직접 구현해야 하는 것이라면 Flutter 커뮤니티의 지원속도가 더 빠르지 않을까 생각이 든다.
    • Flutter 말고 KMP를 사용해야 하는 이유가 있다면, 코틀린을 사용할 수 있고 네이티브 접근성이 좋다는 것.



세번째 세션


💡 지금까지 그래왔고, 앞으로도 그럴 것이다. 네이티브

박상권

  • 14년 동안 안드로이드 개발을 해오면서 왜 네이티브를 해야 하는지 생각해왔다.
  • 또 크로스 플랫폼이 왜 안되는지도 지켜보왔다.
    • 유행했던 크로스 플랫폼들의 흥망성쇠

역사의 주요 크로스플랫폼 기술

  • 웹앱 하이브리드
    • 모바일웹을 마들고 앱으로 껍데기만 씌우는 식으로 진행
    • 모든 화면을 웹으로 만들었다가 점진적으로 네이티브로 전환하는 전략 사용
    • 네이티브로만 개발하는 회사에서도 일부화면은 웹뷰를 사용한다.
    • 센차터치(Sencha Touch) → 2010년대 초에 등장, HTML5 기반, 안드로이드, 아이폰뿐만 아니라 블랙배리까지 지원
  • Cordova, PhoneGap
    • 2011년 어도비가 인수해서 발전시킴
    • 2020년 Cordova만 남음
    • 적어도 한국안에서는 쓰는 기업들 볼 수 없었다
  • Xamarin
    • C# 으로 작성
    • MS에서만든 크로스플랫폼
    • 마찬가지로 한국안에서는 쓰는 기업들 볼 수 없었다.
  • React Native
    • 2015년 페이스북에서 개발
    • JS 기반
    • React 의 선언형 UI 패러다임 사용
    • Facebook(meta)가 만들었는데, 자기들이 Thread앱 만들 때는 RN안쓰고 네이티브 씀 -_-
  • Flutter
    • 2017년 구글에서 개발
    • Dart언어 기반
    • 선언형 UI
    • 랜더링 방식에서 기존 기술과 차별점이 있음. 한 코드로 안드로이드와 IOS에서 동일한 UI로 그려진다.
    • 초기에는 지원되는 라이브러리 매우 제한적이었다.

왜 크로스플랫폼은 안되는가

  • 개발자들이 크로스플랫폼을 시작하는 환경이 보통 타의.
    • 회사의 결정 / 환경에 맞춰서 등등
    • (나는 아님)
  • 샘플앱은 완벽하다
    • 그러나
      • 100만 다운로드 이상의 앱중에서는?
      • 출시한지 5년 이상된 앱 중에서는?
      • 복잡하지 않은 비즈니스 모델의 개인 앱에서만 좋은 경우 많음
  • 결국 안드로이드 IOS공부해야함
    • 디버깅 할때, 오류 발생하거나 그러면 무조건 각각 언어 환경 학습해야함
    • 매우 공감함
    • 근데 Flutter 하면서 네이티브도 할줄 알면 속도랑 성능 둘다 챙길 수 있음
      • 네이티브를 기반으로 하되, Flutter 잘 사용하면 서비스 개발 속도까지 🙂

Flutter는?

  • Flutter는 조금 다르다고 느껴진다.
    • 커뮤니티 성장속도, 활성화 정도가 기존 크로스플랫폼 채널과 다른 그래프를 보여주고 있다.
    • 상용앱 개발 기술스텍으로 충분히 고려할 수 있다고 생각한다.
    • 100만 다운로드 이상의 앱들 중에 Flutter로 개발된 앱들이 많아지고 있다.
  • ex ) 바이낸스, 디디, 아고다, 구글페이, 구글 어스, Grab 등

FlutterHunt - Find apps built with Flutter

  • But, 디바이스 코어 기능 사용하는 서비스들에는 사용하면 안됨
    • 카메라, 블루투스
    • 보안 이슈 있는 금융앱 등

앱 속도

  • 요즘 나오는 모바일 기기의 성능으로는 네이티브와 크로스플랫폼 둘 다 사실상 동일한 속도라고 봐도 무방하다.

하지만!!!!

  • 위 이미지의 기기는 기존 스마트폰의 인터페이스를 전혀 따르지 않고, 오직 카메라와 음성 인터페이스 만을 통해서 모든 서비스에 접근할 수 있다.
  • 카메라에 물체 혹은 이미지를 입력하고, 음성으로 명령하면 AI가 분석하여 결과값을 전달하거나 예약, 구매, 주문을 자동으로 해준다.
  • 사용자들이 굳이 어플리케이션을 찾고, 설치하고, 사용하는 시퀀스가 필요없어지게 될 것이다.
  • 이런 움직임은 스마트폰이 처음 나왔을때와 비슷하다. 그때는 앱 개발자라는 직군이 없었고, 앱을 만들어서 스토어에 배포만 하면 20,30만 다운로드는 기본이었다.
  • 앞으로는 앱 개발자가 아니라, AI기기에 사용될 플러그인을 만들 개발자들이 그때의 앱 개발자 포지션을 가져갈 것이라고 생각한다.

 

그치만, 그냥 하고 싶은거 다 하세요

쓸모없는 경험은 없으니까.

  • 지금 앱을 개발하고, 기술을 연구하는 모든 경험들은 새로운 시대로 가는 주춧돌 역할을 해줄 수 있다고 생각한다.

세번째 세션 소결론

  • 기술 도메인에 종속되지 않고, 소양과 문제해결능력 자체에 집중해야 한다.
    • 크로스플랫폼과 네이티브 사이에서 고민하는 것은 철 지난 문제
    • 언제든 다음 징검다리로 뛰어넘어갈 수 있어야 한다.
  • Flutter가 지금까지 만들어져온 크로스플랫폼과 다른 양상을 띄는 것은 흥미롭고 도전적으로 느껴진다.
    • 당분간은 Flutter 기술로 상용앱을 만드는 것에 문제가 없다고 생각됐다.
    • 하지만 결국 네이티브 지식이 수반되어야 한다.



결론

  • 기업들은 계속해서 새로운 개발 기술 혹은 언어를 만들 것이고, 사용자(개발자) 유입과 유지를 위해 커뮤니티 서포트와 업데이트 지원을 해 줄 것이다.
    • 신생 언어들 대부분이 신규 유입을 위해 Document를 친절히 제공한다.
    • 네이티브와 크로스플랫폼 모든 것을 이용할 수 있는 올라운더가 되자.
  • 고인물이 되지 않기 위해 새로운 기술이 나왔을 때, 계속 공부하고 시도해보는 태도가 중요하다고 생각된다.
    • AI 플러그인 개발자가 되어야 한다는 말도 발표중에 나왔을만큼, 앞으로 어떤 방향성을 가지고 스스로 성장해갈것인지 고민하지 않으면 쉽게 도태될 것이다.

'Software' 카테고리의 다른 글

[성장 기록] Comfort zone 탈출하기  (0) 2024.04.09