관리 메뉴

HAMA 블로그

자마린(Xamarin) 앱 개발의 장,단점 [번역] 본문

하이브리드앱

자마린(Xamarin) 앱 개발의 장,단점 [번역]

[하마] 이승현 (wowlsh93@gmail.com) 2016. 12. 16. 11:42

이번에는 앱 개발 이야기를 좀 할께요~

개인적으로 최근에야 앱개발을 경험 해 볼 수 있었고, 안드로이드(자바) 와 아이폰 (Swift 3.0) 으로 각각 개발을 하였습니다.(오픈SDK 를 그대로 사용하지 못하는 단점이 워낙 커서 결국 그냥 네이티브로 결정했습니다). 개발하고 나서 부족한 점을 채우기 위해 또 개발을 추가 할 생각을 하니...가슴 한편이 답답해짐을 느꼈습니다. 내 경우는 매우 특이한 상황인데 기획,웹프론트,백엔드,IoT서비스플랫폼, 전력데이터분석개발에 추가로 네이티브 앱개발 2종도 모두 "혼자" 개발 했기 때문에  디테일이 떨어지며 이것을 고도화 및 유지보수를 위해 다시 건드리기가 좀 겁이 납니다. (빨리 해당분야의 전문인력들이 생겼으면 ㅜㅜ )  특히 UI 를 좀 더 화려하고 동적으로 꾸미고 싶은 경우는 더더욱 그러한데 비록 몇몇 경우는 각각의 네이티브 코드로 개발을 해야겠지만 적어도 UI 는 하나로 통일 하는게 좋겠다 싶어서 평소에 관심있었던 자마린 과 React Native 를 살펴보곤 했습니다.  

아래는 자마린에 대한 장,단점을 번역 해 보았습니다. React Native 보다는 자마린에 높은 점수를 주고 싶으며 아마 자마린으로 이주를 하게 될 거 같기도 합니다. 개인적으로 Javascript 를 안 좋아하기 때문에 JQuery mobile 이나 Ionic 프레임워크도 제외. 제 프로젝트의 경우 다양하고 빠른 정보의 업데이트가 필요한 분야가 아니라서 웹뷰의 활용도가 거의 없습니다. 뽀대와 성능은 네이티브구요.

참고로 이쪽 블로그에는 자마린 개발기가 있습니다. ->  리모릭스 개발 이야기 
자 이제 본문 시작 !! 





Xamarin 의 장,단점  (가장 최근 정보는 업데이트되지 않음) 

https://www.altexsoft.com/blog/mobile/the-good-and-the-bad-of-xamarin-mobile-development/   번역 

이제 앱개발에 있어서 Xamarin을 빼고 얘기 할 수 는 없을 것 같습니다. 전 세계적으로 1.4백만 개발자군을 거느리고 있는 마이크로소프트 테크놀러지에 기반한 이 새로운 툴에 대해서 말해보고자 합니다.

기술적으로 말하면,  Xamarin 은 C# 과 크로스-플랫폼을 위한 .Net 레이어로 쌓여진 네이티브 라이브러리 를 사용합니다. (크로스플랫폼 개발로 만들어지는 네이티브 앱이라는 야그~)

xamarin platform

 다른 모든것들과 마찬가지로 Xamarin 도 자신만의 장점과 단점을 가지고 있으며, 이어지는 글은 당신의 적절한 선택을 위해 훌륭한 정보를 줄 것입니다.

장점 

 왜 Trello, Slack 및 GitHub 를 비롯한 15,000 넘는 회사가 Xamarin 을 선택 했는지 알게 해줍니다.

⊕ 모든 플랫폼을 위한 하나의 기술 스택 

Xamarin 은 다양한 플랫폼에서 작동하는 앱을 만들기 위해 .Net 프레임워크와 C# 을 이용합니다. 그래서 96%의 소스코드를 재사용하여 빠르게 각각의 플랫폼을 위한 앱을 만들 수 있습니다. Xamarin 은 또한 개발 환경사이에 스위칭을 요구하지 않고 그저 Xamarin IDE(for Mac) 과 Visual Studio (for Windows) 를 사용하면 됩니다.  많은 개발자들이 각 개발툴이 지원하는것에  대해 논쟁하고는 있지만 Microsoft 가 책임진 이래로 굉장한 발전이 이루어지고 있습니다. 크로스플랫폼 개발툴은 이제 무료이며 IDE 의 빌트인으로 제공됩니다.   

⊕ 네이티브 급 성능 

웹기술에 기반한 전통적인 하이브리드 앱들과 다르게 ,  자마린으로 개발하면 네이티브로 빌드 됩니다.
성능은 안드로이드와 iOS 네이티브 앱과 비슷하며  더이상 효율,성능이 약점이 아니게 됩니다. 자마린 플랫폼은 테스팅과 앱 성능을 관찰 할 수 있는 완전한 솔루션을 제공합니다.  

⊕ 네이티브 급 사용자 경험 

자마린은 플랫폼 자체 UI 요소를 사용함으로써 사용자 경험이 강력해집니다. 간단한 크로스 플랫폼 앱은 Xamarin.Forms 툴을 사용하여 빌드되는데 app UI 컴포넌트들을 플랫폼 특정 인터페이스 요소로 변환합니다. Xamarin.Form 을 사용하면 앱 개발 속도가 향상되며 , 비지니스 향 프로젝트에 좋은 선택이 될 겁니다. 아직 여분의 추상레이어에 기인하여 성능에 아주 조금 문제를 줄 수 있습니다. 커스텀 app UI 와 높은 성능을 위하여  Xamarin.iOS 와 Xamarin.Android 를 분리하여 사용 할 수 도 있습니다. 

⊕ 전체 하드웨어 서포트 

자마린을 이용하면 기능적으로 대부분의 네이티브 레벨의 앱을 만들 수 있습니다. 모든 하드웨어 호환 이슈를 제거 하였으며, 플랫폼 사이에서 기능적으로 공통 디바이스와 함께  작업 하기 위하여 플러그인과 특정 APIs 를 사용 할 수 도 있습니다. 플랫폼 특정 APIs 에 접근하기 위해서 자마린은 네이티브 라이브러리들과 링크 할 수 있도록 지원합니다. 이건 작은 수고로 네이티브 레벨 기능들을 더 잘 사용할 수 있게 해줍니다. 

단점 

그러나 여전히 몇가지의 단점이 있는데요.

Θ 최신에 업데이트된 기능보다는 조금 늦은 지원 

이것은 Xamarin 개발자 팀에 전적으로 달려 있습니다. 자마린 같은 크로스플랫폼 용 도구가 최신 iOS 및 Android 릴리스에 대한 즉각적인 지원을 제공하는 것은 사실 불가능합니다. 변경 사항을 구현하거나 새로운 플러그인을 도입하는 데 시간이 좀 걸립니다.

Θ 오픈 소스 라이브러리를 사용하는데 제한 

네이티브 개발은 오픈 소스 기술을 광범위하게 사용합니다. Xamarin을 사용하면 플랫폼과 개발자 및 소비자 모두는 플랫폼에 의해 제공되는 컴포넌트과 몇몇  .Net 오픈 소스 리소스에서 제공하는 구성 요소 만 사용해야합니다. (역주 : Telerik 같은 유명 컴포넌트 회사에서는 이미 Xamarin 용 컴포넌트 가 출시되어있습니다). Android 및 iOS 모바일 앱 개발만큼이나 선택의 폭이 풍부하지는 않지만 Xamarin 구성 요소는 수천 개의 맞춤 UI 컨트롤, 다양한 차트, 그래프, 테마 및 기타 강력한 기능을 제공하여 앱에 추가 할 수 있습니다. 몇 번의 클릭. 여기에는 Stripe과 같은 내장 지불 처리, 비컨 및 웨어러블 통합, 푸쉬 서비스, 클라우드 스토리지 솔루션, 멀티미디어 스트리밍 기능 등이 포함됩니다.

Θ Xamarin 에코시스템 문제 

분명히 Xamarin 커뮤니티는 iOS 나 Android보다 훨씬 작습니다. 따라서 숙련 된 Xamarin 개발자를 찾는 것이 어려울 수 있습니다. 하지만 이 플랫폼은 Microsoft의 지원에 힘 입어 다음과 같이 성장하고 있습니다. 다양한 소스의 정보를 기반으로하는 Xamarin 커뮤니티는 전세계 모바일 개발의 10 %를 차지합니다. Xamarin 엔지니어의 수는 iOS 또는 Android 네이티브 커뮤니티와 아직 비교할 순 없지만 이 플랫폼은 개발자에게 광범위한 지원을 제공합니다. 즉,이 기술에 익숙하지 않은 사람들을 위한 리소스와 실습을 제공하는 훌륭하고 풍부한 교육 플랫폼인 Xamarin University가 있습니다. 이 지원을 이용하면 숙련된 C # / .Net 엔지니어의 학습 곡선이 최소화됩니다.  (역주: 영어가 모국어 만큼 편해야한다는게 함정.. ;;) 

Θ  UX architecture 에 있어서 약간의 문제.

멋진 네이티브 UX로 iOS 및 Android 용 훌륭한 앱을 개발하려는 경우 가장 큰 문제는 플랫폼 간 UX 아키텍처의 큰 차이입니다. 이것은 Xamarin이 당신에게 큰 어려움을 줄 수도 있는 문제입니다. 이러한 차이가 난이도의 80 % 이상이기 때문에 Xamarin이 제공 할 수있는 최대 값은 실제로 다루는 문제의 20 %로 제한됩니다.

Xamarin이 해결하지 못하는 이 문제를 사소하게 바라 볼 순 없습니다. UX 코딩, 애니메이션, 리소스, 동기화,보기, 워크 플로우 등의 차이는 iOS와 Android 사이에서 뚜렷이 구분 될 지 모릅니다

Even if you target only one mobile platform, the benefit of knowing .NET cannot help you with something as simple as loading an image.  You learned about the .NET Bitmap class, GDI, etc.?  That knowledge is really not very useful for mobile apps.  So a key issue here is that Xamarin touts “leveraging existing .NET knowledge”, however this comes with the huge asterisk.  A significant part of your .NET knowledge won’t apply here.



P.S


근데 왜 최근 자마린 한글 번역서는 하나도 없는지 모르겠군요. 무료이며 비쥬얼 스튜디오라는 강력한 툴과 C#으로 무장한 자마린을 활용하고자 하는 사람들이 많을텐데 말이지요.. C# 은 자바했으면 어렵진 않을거고


Comments