Flutter는 크로스 플랫폼으로서 Android , iOS 두 모바일 플랫폼에서 모두 동작합니다.
크로스 플랫폼은 특정 소스를 플랫폼(ex. Android, Windows, Linux 등)에 묶이지 않고 자유롭게 사용할 수 있도록 서포트하는 역할을 합니다.
예를 들어 C언어는 소스코드를 실행하기 위해서 운영체제마다 별도의 컴파일러로 컴파일을 해야 합니다.
따라서 서로 다른 3개의 운영체제에서 C로 짜여진 코드를 수행하고 싶다면 3번의 컴파일을 별도로 해주어야 합니다.
반면 Java의 경우 JVM, 즉 Java Virtual Machine이라는 중개자를 두어 플랫폼 호환성을 높입니다.
운영체제에 맞는 JVM이 있다면 컴파일된 Java 소스를 JVM 위에서 동일하게 수행할 수 있습니다.
이 외에도 게임 개발에 사용되는 유니티, 언리얼 엔진, 게임메이커 스튜디오 등이 크로스 플랫폼을 활용하여 다양한 플랫폼에서 제약 없이 사용할 수 있는 대표적인 예시입니다.
Flutter에서는 Flutter SDK를 JVM 처럼 사용하여 크로스 플랫폼을 구현하고 있으며, 이처럼 다양한 플랫폼 지원을 위한 노력은 Flutter 뿐만 아니라 모든 개발 분야에서 이루어지고 있습니다.
크로스 플랫폼의 장점
동일한 코드로 서비스를 개발함으로서 유지 보수 및 기능 개발 인력을 효율적으로 활용 가능한 것이 크로스 플랫폼을 사용하는 가장 큰 이유입니다.
"모바일 어플리케이션 서비스를 운영한다." 라고 하면 우리는 Android, iOS 두 플랫폼에 대한 개발 인력이 모두 필요합니다.
코드 베이스가 달라 서로 다른 플랫폼을 동시에 소화할 수 있는 개발자는 드물며, 회사 입장에서는 인력을 채용하는 데 많은 비용이 소모됩니다.
뿐만 아니라 서비스의 특정 UI에 대해서 의견 충돌이 발생할 수도 있습니다. 두 플랫폼의 철학이 달라 UI를 구성하는 방식까지 다르기 때문입니다.
이러한 문제점들을 해소할 수 있는 키가 바로 크로스 플랫폼입니다.
단일 코드로 작업하기 때문에 개발 인력을 절반으로 줄일 수 있고, 개발 초기 단계 뿐만 아니라 유지보수를 하는 과정에서도 두 플랫폼에 대해 동일한 팀 인력으로 대응하기에 속도가 빠르며 산출물이 동일합니다. 이는 개발 비용을 줄이는 것으로 이어집니다.
이러한 장점을 가진 크로스 플랫폼 지원 언어 중에서도 Flutter는 어떠한 매력으로 빠르게 시장 점유율을 넓혀나가고 있는 것일까요?