이번 글에서는 프로그래밍을 웹과 모바일로 분야를 나눠서 알아보겠습니다. 각 분야와 구조 별로 배워야 하는 컴퓨터 언어와 프레임워크가 다릅니다. 따라서 나의 상황과 필요에 맞게 기술을 선택하는 것이 중요합니다. 하단에서 각 분야와 구조에 대한 자세한 설명을 살펴보시고 어떤 기술이 필요한 지 먼저 익혀보세요. 다음 글에서는 데이터 분야와 그 외 분야도 함께 알아보면서 필요한 기술을 말씀드리겠습니다.
1. 웹 개발 알아보기
웹 서비스 구조를 클라이언트와 서버로 나누어 봤었습니다. 클라이언트 개발은 브라우저에 보이는 앞단에 해당하는 내용이기 때문에 프론트엔드 개발이라고 불립니다. 서버 개발은 유저에게 보이지 않는 뒷단에 해당하는 내용이기 때문에 백엔드 개발이라고 불립니다. 프론트엔드 개발의 기본은 유저에게 보이는 화면을 그려주는 것입니다. 여기에 HTML, CSS, JavaScript을 대표적으로 활용합니다.
페이지가 많아질수록, 개발에 참여하는 사람이 많아질수록 코드는 점점 복잡해지는데요. 이때 라이브러리와 프레임워크를 적극적으로 사용할 수 있습니다. 대표적인 프레임워크에는 React, Angular, Vue가 있습니다. 그중에서도 React를 가장 많이 사용하고 있습니다. 따라서 프론트엔드 개발이 하고 싶은 분들은 HTML, CSS, JS를 배운 후 React를 공부하시면 좋습니다.
백엔드 개발은 데이터베이스를 함께 활용할 수 있어야 합니다. 또한 API(Application Programming Interface)가 중요합니다. 두 프로그램이 서로 소통할 수 있게 만들어주는 기술이 API입니다. 백엔드 개발자가 API를 만들면 프론트엔드와 백엔드가 소통할 수 있게 됩니다. 그렇다면 클라이언트가 요청하는 일을 서버에게 전달할 수 있습니다. 결국 웹사이트에 백엔드를 구현하기 위해서는 API 개발과 데이터베이스 관리를 할 수 있어야 합니다. 백엔드 개발이 하고 싶은 분들은 Java, Python, Kotlin, Php, Ruby 등 다양한 언어 중 하나를 골라서 공부하시면 됩니다. 그리고 그 언어에 맞는 프레임워크를 선택해서 추가적으로 공부하면 됩니다.
데이터베이스는 SQL과 NoSQL로 구분됩니다. SQL은 규칙이 엄격하지만 역사가 오래돼서 안정적인 장점이 있고, NoSQL은 비교적 최근에 생긴 방식이어서 유연하면서도 간편하게 사용할 수 있습니다. 아직까지는 SQL이 자주 쓰이지만, NoSQL을 사용하는 사람도 많아지고 있고, 최근에는 이 두 가지를 섞어 쓰기도 합니다. 만일 프론트엔드 위주로 공부하면서 가볍게 백엔드를 공부하고 싶다면, mongoDB 같은 NoSQL를 추천합니다. 반면 백엔드를 제대로 공부하고 싶다면 SQL을 먼저 공부하는 걸 추천합니다.
2. 모바일 개발 알아보기
모바일 앱의 구조에 대해서 먼저 알아봅시다. 모바일 개발도 웹 개발과 개념이 비슷합니다. 서버 개발은 웹 개발과 유사하지만, 클라이언트 개발이 조금 다릅니다. 웹 개발에서는 유저의 브라우저가 클라이언트 역할을 수행합니다. 반면 모바일 개발에서는 스마트폰에 있는 앱이 클라이언트 역할을 수행합니다. 우선 앱스토어에서 앱을 다운로드하면 클라이언트 코드가 핸드폰에 설치되며 필요한 기능에 대해 앱이 서버에게 요청하게 됩니다. 주로 모바일 개발자는 모바일 클라이언트 개발자를 의미하는 경우가 많습니다. 반면 백엔드 개발자나 서버 개발자는 웹과 모바일 상관없이 통일해서 부르는 경우가 많습니다.
모바일 앱 개발은 아이폰 앱과 안드로이드 앱을 따로 만들어야 하는데요. 아이폰 앱 개발은 애플에서 만든 swift로 만들고, 안드로이드 개발은 Kotlin이라는 언어를 사용합니다. 두 가지 앱을 따로 만들어야 한다는 점이 모바일 개발에서 어려운 부분입니다. 이런 어려움을 해소하기 위해서 아이폰과 안드로이드를 동시에 연결하는 크로스 플랫폼 모바일 개발 솔루션이 나오기 시작했습니다. 가장 유명한 플랫폼은 React Native입니다. React 기술을 통해 웹에서 쓰던 기술을 재활용해서 아이폰과 안드로이드에서도 사용할 수 있게 만들었습니다. React는 페이스북에서 만든 기술인데, 구글에서도 Flutter라는 비슷한 기술을 출시했습니다. Flutter는 구글에서 만든 Dart라는 언어를 사용해서 개발합니다.
하나의 모바일에 최적화된 형태로 만들기 위해서는 Swift와 Kotlin으로 아이폰 앱, 안드로이드 앱을 따로 만드는 것이 좋습니다. 하지만 만약 서비스가 복잡하지 않고, 높은 성능이 필요하지 않다면 React Native나 Flutter을 사용해서 아이폰과 안드로이드 앱을 동시에 만드는 것이 좋습니다. 따라서 어떤 기술을 배울지는 현재 나의 상황과 목표에 따라 결정하면 됩니다. 만일 필요한 것만 빠르게 배워서 모바일 개발을 하고 싶다면, Dart와 Flutter을 선택하는 것이 좋습니다. 다만, 이미 JavaScript이나 react를 배운 적이 있거나, 향후에 웹 개발도 배우고 싶다면 React Native를 배우는 것을 추천합니다.
※ 해당 글은 코드잇(codeit)의 [프로그래밍 오버뷰] 강의 내용에서 참고하여 작성하였습니다.