두 종류의 앱 개발자 : 안드로이드 vs iOS
IT를 잘 모르는 사람도 스마트폰에는 삼성으로 대변되는 안드로이드 폰과 애플 아이폰 두 종류가 있다는 것쯤은 안다. 두 가지 폰은 서로 운영 체계(OS, Operating System)가 달라 구동되는 앱도 다르다.(아이폰의 OS이름은 iOS이다.) 아이폰에서 동작하는 앱이 안드로이드 폰에서는 실행되지 않고, 그 반대도 마찬가지다.
따라서 앱을 만드는 입장에서는 안드로이드 폰 용과 아이폰 용 iOS앱 두 가지를 개발하여야 한다. 우리가 자주 사용하는 앱 대부분은 두 가지가 있다 보면 된다. 두 가지 앱을 개발하더라도 개발자 한 명이 다 할 수 있으면 그래도 다행이다. 그러나 현실은 그렇지 않다. 안드로이드 앱과 iOS 앱 두 가지 개발이 가능한 개발자는 드물다. 따라서 앱 하나를 개발하기 위해 안드로이드 앱 개발자와 iOS 앱 개발자 각각 필요하다.
2022년 현재 국내 안드로이드와 iOS의 점유율은 약 67:33이다.
앱 개발 입장에서는 33% 고객을 위해 iOS용 앱을 개발해야 한다.
물론, 비용 때문에 어쩔 수 없이 iOS 앱을 포기하는 경우도 있긴 하다.
안드로이드 앱 개발자가 되기 위해서 갖추어야 할 기본 기술은 3가지 정도로 요약할 수 있다.
자바(Java)
자바는 가장 많이 사용되는 개발언어다. 안드로이드는 공식 언어로 자바를 지원하고 있다. 안드로이드에서 개발을 하려면 자바를 이해하고 있어야 한다. 자바는 안드로이드 개발 이외에 백엔드 개발 등 현재 가장 범용적으로 사용되고 있으므로 개발자의 필수 언어이다.
코트린(Kotlin)
안드로이드는 자바를 공식언어로 지원했는데, 오라클이라는 회사가 자바를 인수하면서 오픈 SW인 자바가 특정 회사에 귀속되게 되었다. 이후 구글에서는 코틀린을 안드로이드 공식 언어로 지정하였다. 이후 많은 기업들이 자바로 만든 앱을 코틀린으로 전환하고 있다. 따라서 안드로이드 개발자라면 코트린을 알아야 한다. (다행히 자바와 크게 다르지 않아 러닝커브가 적음)
안드로이드 스튜디오
구글에서 제공하는 안드로이드 앱을 개발할 수 있는 개발환경을 제공하는 SW도구이다. 기본적으로 자바와 코트린 언어를 사용할 수 있다. 개발자들이 사용하는 개발 환경은 기존의 것을 고수하는 경향이 강한데, 통합된 안드로이드 개발환경을 제공하는 안드로이드 스튜디오에서 개발하는 추세가 늘고 있다.
개발을 하려면 개발언어와 개발 환경을 제공하는 개발 도구가 필요하다. 안드로이드 앱 개발을 위해 자바나 코트린이라는 개발 언어와 안드로이드 스튜디오라는 개발 도구가 필요하듯,
아이폰용 앱을 개발하기 위해서는 스위프트(Swift)라는 개발언어와 XCode라는 개발 도구가 필요하다.
스위프트(Swift)
스위프트는 애플의 iOS와 macOS를 위한 프로그래밍 언어이다. 기존에는 오브젝티브-C라는 언어로만 iOS앱을 개발할 수 있었는데, 2014년 애플이 스위프트를 소개했다. 스위프트는 기존 오브젝티브-C보다 쉬워 많은 최근 개발자들은 주로 스위프트로 iOS앱을 개발하고 있다.
XCode
가장 많이 사용되는 iOS앱 개발 도구이다. 애플의 앱 스토어에서 다운로드하여서 설치할 수 있다. (iOS개발을 하려면 Mac에서 가능하다.)
서비스를 위해 앱 두 가지를 개발해야 하는 것은 부담스럽다. 개발도 두 배, 운영과 관리 비용도 두 배. 앱하나 개발하는데 비용이 너무 많이 든다. 서비스하는 입장에서는 어떻게든 앱 하나로 안드로이드에서 되고 아이폰에서도 되는 그런 앱 개발 방식이 없을까 고민하기 마련이다.
서비스 공급자는 모바일에 최적화하여 웹을 개발하려 한다(모바일 웹을 보통 "웹 앱"이라 한다). 웹은 OS에 상관없이 브라우즈만 있으면 OS에 상관없이 구동되기 때문이다. 그러나 이미 보았듯이 웹은 모바일에 최적화되기에는 한계가 있다. 이를 보완하기 위해 앱과 웹을 결합한 하이브리드 앱 개발 방식이 나왔다. 웹을 최대한으로 많이 개발하고 필요한 부분(카메라작동과 같은 웹이 불가능한 부분)만 앱으로 개발하는 방식이다.
하이브리드 개발 방식도 성능적인 측면, 개발적인 측면(웹개발자, 앱개발자 다 필요함)에서 크게 대안이 되지 않았다. 하지만 하나의 모바일 앱을 두 개의 운영체제로 개발해야 하는 번거로움을 해소하기 위한 노력은 계속되었고,
그 결과로 두 개의 운영체계에서 동작이 가능한 개발 프레임워크가 만들어졌다. 이를 크로스 플랫폼이라 한다. 즉, 하나의 소스 코드로 안드로이드 버전과 iOS 버전에서 모두 작동할 수 있는 앱을 만드는 개발 도구이다. 대표적인 모바일 크로스 플랫폼으로는 구글에서 출시한 플러터, 페이스북의 리액트 네이티브, 그리고 마이크로소프트의 닷넷 마우이(구 자마린)가 있다.
크로스 플랫폼이 앱 개발의 만능이 되었으면 좋겠지만 안타깝게도 이 역시 한계가 있다. 이들 크로스 플랫폼 개발 방식은 네이티브 앱에 비해 성능을 100% 끌어올릴 수 없고 기기 활용 한계도 여전했다. 선택지는 많아졌지만, 여전히 앱 개발에 대한 문제가 속 시원히 해결된 것은 아니라 할 수 있다.
앱 개발 방식이 많다 보니 앱 개발 방식의 선택은 서비스 측면에서 매우 중요한 결정이 되었다. 서비스 질과 비용에 있어 중요한 선택이다. 서비스 질을 위해 네이티브 앱으로 개발하자니 두 가지를 개발해야 해서 비용이 많이 들고, 웹 앱으로 개발하자니 성능, 속도와 같은 서비스 질이 낮아진다. 개발 방식은 한번 선택하면 쉽게 바꿀 수 없다. 바꾸는 데는 비용과 위험이 수반된다. 그리고 기업 내 개발자 구성도 변할 수밖에 없다.
일반적으로 서비스 공급자가 선택하는 모바일 앱 개발 방식을 살펴보면,
보안이 필수적인 서비스(보안 프로그램과 연동되어야 한다.) : 금융기관
실시간이나 빠른 앱의 성능이 필요한 서비스 : 카카오(채팅), 유튜브와 같은 포탈 및 채팅 서비스
와 같은 서비스는 네이티브앱으로 개발을 하며,
콘텐츠의 내용이 많거나, 변경이 많은 서비스 : 네이버, 티몬 등
는 주로 하이브리드 앱 형태로 개발된다.
앱 다운로드가 필요하지 않고, 많은 고객이 쉽게 접근하도록 서비스를 하려면 웹으로 앱을 개발한다.
(일반적으로 검색을 통해 웹으로 쉽게 접근하고, 더 많은 서비스를 받고자 하면 앱을 설치하도록 유도한다.)
따라서 앱 개발자의 수요가 어떤 기업, 어떤 산업 많은지를 알 수 있고, 진로 결정에 참고할 수 있다.
클라이언트 개발자가 되기로 했다면 어떤 개발자로 진로를 선택할지 고민이다. 웹 개발자가 되어야 할지? 아니면 모바일 시대에 앱 개발자가 되어야 할지. 앱 개발자라면 안드로이드 개발자가 되어야 할지, iOS개발자가 되어야 할지 고민이다.
명확한 답은 없다. IT 개발자에 대한 수요도 수시로 바뀌고, 개발 기술도 빨리 변하기 때문이다. 그러나 몇 가지 참고할 만한 것들을 나열해 본다면,
모바일에서 웹은 한계를 가지고 있지만, 웹 구조는 앞으로도 공고하게 유지될 것이다. 그만큼 웹 기술도 한계를 없애기 위해 발전할 것이다.
웹은 범용성을 가지고 있다. 웹 개발은 모바일뿐만 아니라 PC 등 다양한 기기에서 여전히 유효하다. 범용적이고 보편적인 만큼 웹 개발자 수요도 많고 그만큼 웹 개발자도 많다.
반면, 앱 개발자는 앱 개발이라는 것에 한정적이다. 네이티브 앱 개발이 아닌 곳에 앱 개발자가 설 곳은 없다. 그러나 모바일 퍼스트 추세에 따라 모바일 개발자의 수요는 많아지고 있다.
안드로이드에 비해 iOS개발자는 상대적으로 적어, 개발자를 구하기 어려운 경우가 많다. 작은 부분에 전문적인 개발자가 되고자 하면 iOS 앱 개발자를 생각할 수 있다.
개발자의 특성이 명확하다 보니 한 가지로 결론 낼 수 없다. 보편적인 개발자가 되고자 한다면 웹 개발자가, 특정한 부분에 집중하는 개발자가 되려면 앱 개발자가 맞다. 첫 결정이 쉽지 않지만, 진로를 한번 정했다고 해서 끝까지 그 길로 가야 하는 것이 아니다.
앱 개발자로 시작했으나 앱 개발이 맞지 않으면, 웹 개발자로 전환할 수 있다. 실제로 그런 일은 빈번하다. 그러려면 IT 기술 전반에 대한 관심과 기본 지식을 가지고 있어야 한다. 그래야 원만하게 전환할 수 있다. 특정 영역에 너무 천착하면 시야가 좁아져 다른 것을 볼 수 없다. 항상 하는 말이지만 나의 기술과 내 주변의 기술, 나의 일과 나와 인접한 일에 대한 관심과 지식이 있어야 한다. 그래야 더 나은 개발자로 발전할 수 있다.
네이티브 앱 개발자라면 하이브리드 앱 개발도 할 수 있어야 한다(의외로 웹과 연계되는 하이브리드 앱 개발을 못한다는 앱개발자가 많다). 또 웹 개발자 마찬가지로 앱과 연동하는 법을 알아야 한다.
또한 앱과 웹 개발자들은 최근 모바일 기술로 제시되고 있는 구글의 플러터, 페이스북의 리액트 네이티브, 그리고 마이크로소프트의 닷넷 마우크로스와 같은 크로스 플랫폼 프레임에 대해서도 알려는 노력을 해야 한다.
이들 기술은 계속 발전할 것이고 어느 순간 대세가 될 수 있다. 그렇게 되면 그 기술을 채용하는 기업이 많아지고(패션만 유행이 있는 것이 아니라 기술도 유행이다), 개발자 수요가 갑자기 많아질 것이다. 미리 그런 기술을 가지고 있다면 개발자로 선점효과(높은 몸 값^^)를 가질 수 있다. 스타트업과 같은 새로운 기술 선도적인 기업에서는 비용 절감과 새 기술에 대한 선점을 위해 이런 기술 도입에 적극적이다. 스타트업에 진로를 생각하고 있다면 이런 기술에 대한 사전 준비를 해야 한다.
모바일 시대에 앱 개발로의 진로는 좋다. 그러나 앱 개발에만 머문다면 위험할 수 있다. 앱을 기본으로 하고, 다른 개발로의 확장을 반드시 염두에 두어야 한다.
체계적이고 보완된 내용으로 브런치 글과 같은 이름으로 출간을 하게되었습니다. 아래의 링크를 통해 자세한 내용을 확인할 수 있습니다.
교보문고
나에게 맞는 IT 직업 찾기
예스24
나에게 맞는 IT 직업 찾기
알라딘
나에게 맞는 IT 직업 찾기