Alan Zeichick | Content Strategist | 2024년 9월 6일
재고 관리, 인사, 회계용 백엔드 시스템. 이메일, 문서, 스프레드시트 작성용 생산성 애플리케이션. 웹사이트, 모바일 앱 등의 고객 대면 소프트웨어. IT팀, 그래픽 디자이너, 프로젝트 매니저, 경영진, 트럭 운전자 등을 위한 특수 목적 시스템.
오늘날의 기업 운영에는 위와 같이 엄청난 양의 코드가 필요합니다.
귀사의 핵심 애플리케이션 중 상당수는 소프트웨어 공급업체가 개발한 상용 제품이고, 많은 경우 서비스형 소프트웨어(SaaS) 라이선스 방식으로 사용됩니다. Microsoft Office, Oracle NetSuite, Adobe Photoshop 등이 그 좋은 예입니다. 그 외의 애플리케이션은 사내 개발팀이나 외주업체가 귀사의 요구에 맞춰 개발하거나 커스터마이징한 것들입니다. 본 문서는 후자를 집중적으로 다룹니다.
애플리케이션 개발(AppDev)은 소프트웨어를 설계, 제작, 테스트, 배포하는 일련의 과정입니다. 성공적인 애플리케이션 개발을 위해서는 다양한 역량을 보유한 직원들이 필요합니다. AppDev팀의 구성원으로는 프로그래머, 소프트웨어 엔지니어, 아키텍트, UI 디자이너, 테스터, QA 전문가, 프로젝트 매니저 등이 있습니다.
애플리케이션 개발 과정은 해결해야 하는 문제, 잡고자 하는 기회 등이 있을 경우 시작됩니다. 소프트웨어의 개발, 배포, 유지를 위한 리소스가 필요하므로 사용 사례의 기대 효과가 반드시 관련 비용과 같거나 그 이상이어야 합니다. 사용 사례에 관한 합의가 이루어지면 기업은 예산, 인력, 시간 등의 리소스를 배정합니다. 앱 개발 프로젝트는 일반적으로 다음 두 가지 경로 중 하나를 통해 진행됩니다.
계획적 개발. 애플리케이션의 모든 요구 사항을 사전에 정의하고 모든 이해 관계자의 승인을 받습니다. 이후 소프트웨어를 설계, 디자인, 테스트하고 직원 또는 고객이 사용할 수 있도록 배포합니다. 이러한 개발 방식은 대형 프로젝트의 경우 수 년이 소요될 수 있으며, 그 사이에 요구 사항이 변화함으로써 완성된 애플리케이션의 유용성이 기대에 부합하지 못할 수 있습니다.
반복적 개발. 소프트웨어의 경량화된 버전을 설계, 구축, 테스트합니다. 다음으로 짧은 경우 단 몇 주 단위의 주기별로 새로운 기능을 점진적으로 추가합니다. 배포는 자주 진행됩니다. 종종 애자일(agile) 방식으로 불리는 이같은 접근 방식은 더 유연하고, 변화하는 요구에 민첩하게 대응하고, 비즈니스 가치를 더 빨리 창출할 수 있습니다.
핵심 요점
애플리케이션 개발은 단순한 프로그래밍 이상을 요구하는 작업입니다. Java, JavaScript, Python, Go, Rust, SQL 같은 언어로 코드를 작성하는 일은 전체 과정의 일부에 불과합니다. 개발팀은 새로운 애플리케이션이 웹사이트 업데이트를 통한 매출 향상, 재고 현황을 실시간으로 보여주는 앱을 활용한 운영 효율 개선, 간단한 급여명세서 조회 및 휴가 신청을 지원하는 셀프서비스 포털을 통한 직원 만족도 향상 등의 비즈니스 사용 사례를 반드시 지원하도록 만들어야 합니다.
다음과 같은 설계 기준도 마찬가지로 중요합니다.
이상의 요건을 충족하는 것은 주로 애플리케이션 아키텍트의 책임이며, 그 내용은 개발팀의 모든 인원이 반드시 숙지해야 합니다.
대부분의 기업은 애플리케이션 없이는 일상적인 운영을 진행할 수 없습니다. 많은 기업에게 애플리케이션은 경쟁력의 핵심이며, 소프트웨어를 빠르게 도입, 커스터마이징, 개발하는 역량은 급변하는 시장에 적응하기 위한 필수 요소입니다.
기업은 경우에 따라 기성 소프트웨어를 그대로 사용하거나, API(애플리케이션 프로그래밍 인터페이스) 또는 SDK(소프트웨어 개발 키트)로 기능을 확장하는 방식으로 상용 애플리케이션을 커스터마이징해 사용할 수 있습니다. 그러나 기업의 요구 사항을 충족하는 상용 앱이 존재하기 않거나, 기업의 고유한 전문성, 지식재산 등을 다루기 위한 앱이 필요할 때가 있습니다. 이러한 경우 자체 애플리케이션을 개발할 수 있는 기업이 경쟁 우위를 확보할 수 있습니다.
애플리케이션 개발은 프로젝트를 제안, 지원하는 비즈니스 이해관계자부터 소프트웨어를 만드는 기술 전문가까지 많은 단계 및 인력이 필요한 과정입니다. 안전하고, 보안 태세를 갖추고, 유용하고, 비즈니스에 가치를 더해 줄 앱을 만들기 위해서는 다양한 아이디어 및 때로 서로 상충하는 우선순위들을 조율해야만 합니다.
소프트웨어를 개발하는 이유는 무엇일까요? 주된 이유는 두 가지입니다. 소프트웨어가 곧 기업의 비즈니스 그 자체인 경우도 있고, 소프트웨어가 기업의 비즈니스를 돕기 때문인 경우도 있습니다.
모든 애플리케이션이 같은 방식으로 만들어지는 것은 아닙니다. 대규모 개발 프로젝트는 수개월에서 수년이 걸릴 수 있는 공식적인 프로세스를 거칩니다. 소규모 프로젝트는 일주일, 심지어 하루 만에 끝낼 수도 있습니다. 프로젝트의 이해관계자들은 기술 개발팀과 함께 최적의 접근 방식을 결정합니다.
로우 코드/노 코드
모든 애플리케이션 개발에 앞서 설명한 모든 과정이 필요한 것은 아닙니다. 몇십 년 전, 파워 유저('시민 개발자')들이 비즈니스 문제를 해결하기 위한 스프레드시트 매크로를 개발하던 시절을 떠올려 보세요. 최근에는 비즈니스 사용자가 시각적 도구로 특정 데이터 소스, 알고리즘, 워크플로를 조합해 원하는 앱을 직접 만들 수 있는 로우 코드/노 코드 개발 방식이 등장했습니다. 이러한 애플리케이션은 클라우드에서 실행되며 직원, 고객, 파트너사 등이 사용할 수 있습니다. 대개 표준 웹 브라우저나 휴대폰, 태블릿, 키오스크 등의 모바일 기기에서 실행됩니다.
로우 코드/노 코드의 장점으로는 훨씬 빠른 개발 및 배포 속도, 호스팅 플랫폼의 내장 보안 모델, 유의미한 수준의 구축 및 유지 비용 절감, 그리고 가장 중요한 장점인 전문 개발자 의존도 축소 및 직원 역량 강화 등이 있습니다. 그러나 전문 개발자들도 대규모 개발 프로젝트가 필요 없는 단순한 문제를 해결할 때는 로우 코드/노 코드 도구를 선호합니다.
아키텍트, 디자이너, 개발자, 테스터가 협렵해 처음부터 개발한 앱과 같은 수준의 정교함을 제공하지는 못하지만, 스프레드시트 커스터마이징보다는 훨씬 뛰어나며 비개발자도 쉽게 사용할 수 있는 인터페이스를 제공합니다. 이런 앱은 서로 다른 앱들을 임시로 연결하는 데도 유용하며 단기적 이슈 대응이나 즉각적인 기회 포착에 적합합니다.
간소화된 로우 코드/노 코드 도구는 숙련된 개발자에게도 충분한 실용성을 제공합니다. Oracle APEX로 로우 코드 애플리케이션 개발을 시작해 보세요.
모바일
모바일 애플리케이션 개발에는 앱을 만들고 배포하기 위한 다양한 도구, 서비스, 제품이 필요합니다. Google Android 및 Apple iOS는 가장 인기있는 모바일 앱 플랫폼으로서 다양한 개발 도구 및 방법론을 지원합니다. 모바일 앱은 하나의 애플리케이션이 서로 통신하는 작은 작업 단위로 나눠지는 마이크로서비스 아키텍처로 설계되는 경우가 많습니다.
Android 및 iOS 기기의 보편성과 상시 연결성에 주목한 많은 기업들이 직원과 고객을 함께 지원하기 위한 수단으로 모바일 앱을 채택했습니다. 기업 환경에서 직원들은 영업, ERP, 인사 셀프서비스, 보안, 근태 관리, 메시징 등 다양한 업무에 모바일 앱을 사용합니다. 전문 업체가 만드는 앱도 많지만, 기업이 자체적으로 직원과 고객을 위한 앱을 설계, 개발, 배포할 수도 있습니다.
데이터베이스
엔터프라이즈 애플리케이션은 판매 거래, 가격표, 인사 문서, 이메일, 금융 기록, 고객 연락처, 회사 재무 등의 데이터를 기반으로 작동합니다. 엔터프라이즈 데이터는 손쉽게 조회, 검색, 갱신, 보호, 분석할 수 있는 데이터베이스에 저장하는 것이 가장 효율적입니다.
기성품 및 커스텀 애플리케이션 모두 효율적인 쿼리 언어, 표준 데이터 교환 포맷, 견고한 프로그래밍 인터페이스를 사용해 데이터베이스에 액세스합니다. 그러나 Oracle Database 23ai와 같은 고급 데이터베이스는 데이터베이스 엔진 내부에서 애플리케이션을 실행해 데이터에 더욱 빠르고 안전하게 접근할 수 있습니다. 개발 도구는 애플리케이션 개발 과정에서 데이터베이스 엔진 자체를 개발 대상으로 선택할 수 있습니다. 이러한 방식은 데이터베이스 관리자가 배포 후 애플리케이션을 관리하고 튜닝할 수 있다는 추가적인 이점을 제공합니다.
마이크로서비스
클라우드 마이크로서비스 아키텍처로 설계된 애플리케이션은 유지보수와 배포가 용이하고 매우 견고합니다. 수백~수천 개의 작은 마이크로서비스가 협력해 하나의 작업을 효율적으로 수행하고, 간단한 프로토콜을 사용해 다른 애플리케이션 또는 마이크로서비스와 소통합니다.
마이크로서비스 기반 애플리케이션은 확장성도 뛰어납니다. 클라우드 중심의 설계 및 아키텍처를 바탕으로 특정 서비스 사용량이 많아지면 클라우드가 자동으로 더 많은 복제본을 작성하고 실행할 수 있습니다. 또한 각 마이크로서비스가 특정한 작업에만 집중하므로 설계, 코딩, 테스트, 배포가 수월합니다.
방법론이란 애플리케이션 제작에 대한 개발팀의 접근 방식을 의미합니다. 설계 철학, 프로젝트 관리 방식, 개발팀/고객/핵심 이해관계자 간 협업 방식 등이 방법론에 포함됩니다. 개발팀은 방법론에 따라 기술적 도구를 선택하기도 하고, 선택 과정에서 방법론을 참고하기도 합니다.
어떤 방법론을 선택하든 두 가지 사실은 변하지 않습니다. 개발팀의 목표는 언제나 프로젝트의 성공이고, 모든 참여자들에게는 각자의 의견이 있다는 것입니다. 크게 보았을 때 현대의 소프트웨어 개발 방법론은 워터폴(waterfall)과 애자일(agile)이라는 두 가지 방법론으로 나뉘어집니다.
워터폴
워터폴 개발은 모놀리식(클래식) 모델로도 불리며, 요구사항 수집 → 설계 → 코딩 → 테스트 → 승인 → 배포 → 유지 관리 순으로 진행되는 선형적 단계의 진행에 집중합니다. 각 단계를 충분히 수행하고, 이전 단계가 끝나야만 다음 단계로 진행합니다. 한번 끝낸 단계로 다시 돌아가는 경우가 거의 없으므로 워터폴 방식은 급변하는 상황이나 기업의 변화하는 요구에 적응하기 어렵습니다. 따라서 워터폴 접근 방식은 자동차, 원자력 발전소, 의료 기기용 소프트웨어와 같이 한 번에 완벽하게 수행해야만 하는 프로젝트에 가장 적합합니다.
애자일
애자일 개발은 정반대의 접근 방식을 취합니다. 애자일은 최소 기능 제품(MVP)을 빠르게 만들고 배포한 뒤 반복적으로 기능을 추가, 보완하고, 신기술과 아이디어를 적용하고, 성능을 개선하는 데 집중하는 방식입니다.
애자일 방법론의 종류는 다양합니다. 역사, 지지층, 근거가 각기 다른 수십 가지 방법론이 존재합니다. 예를 들어 테스트 주도 개발(TDD) 방식을 사용하는 코더들은 새 코드를 작성하기 전에 새 코드의 올바른 동작을 보장하는 자동화 테스트를 먼저 작성합니다. 이같은 방식은 모든 새로운 코드를 애플리케이션의 최신 이터레이션에 반영하기 전 검증하도록 도와줍니다.
대부분의 애자일 방법론은 이터레이션을 매우 짧게 가져가며, 보통 수주 단위로 진행합니다. 스프린트라고 부르는 이터레이션 기간 동안 개발팀은 애플리케이션에 새로운 기능을 추가하는 데 집중합니다.
신속
양식 기반 앱, 보고서 작성기, 데이터베이스 쿼리 도구처럼 개념적으로 설계 및 배포가 쉬운 앱도 있습니다. 그러한 앱들의 경우 워터폴이나 애자일 같은 본격적인 개발 프로세스가 필요없을 수 있습니다. 그러한 경우 유용한 것이 신속한 애플리케이션 개발(RAD) 방식입니다. RAD는 애자일 계열의 방법론으로서 소수의 팀원, 때로는 단 한 명의 개발자가 UI를 만들고, 내부 로직을 코딩하고, 엔터프라이즈 데이터 소스에 연동할 수 있도록 지원하는 간편한 도구를 사용하는 것이 특징입니다.
RAD는 본격적인 개발에 들어가기 전 원하는 앱의 시각적 목업을 만들어 개발자와 이해관계자가 앱의 외형과 기능에 대해 사전에 합의하는 과정에서 사용되어 왔습니다. 따라서 RAD는 '신속한 프로토타이핑'의 약어로도 불리게 되었습니다. 그러나 로우 코드 및 노 코드 도구가 등장하게 되면서 RAD는 신속히 개발한 프로토타입을 기반으로 곧바로 완성하고 배포할 수 있는 간단한 앱을 제작하기에 매우 유용한 방식이 되었습니다. 나아가 개발 기간이 며칠 수준으로 단축되어 비즈니스 사용자의 만족도도 향상되었습니다. RAD 방식으로 만들 수 있는 앱이라면 그렇게 하는 편이 바람직한 경우가 많습니다.
주요 차이점
| 배포까지 소요되는 기간 단축. 애자일 개발을 사용하면 복잡한 기능들이 추가되기 전부터 직원 또는 고객이 애플리케이션을 사용해 볼 수 있습니다. 애자일 개발 방식은 새 기능이 끊임없이 추가되는 모바일 애플리케이션 분야에서 흔히 사용됩니다. | 엄격한 요구 사항. 요구사항이 매우 구체적이고 이를 벗어나면 안 되는 경우 워터폴 모델이 적합합니다. 의료기기 소프트웨어나 산업용 제어 시스템이 그 좋은 예입니다. |
| 프로토타입을 실사용 용도로 전환. 간단한 애플리케이션에는 RAD 프로세스가 최선일 수 있습니다. 개발자 또는 파워 유저는 RAD와 노 코드/로우 코드 도구를 활용해 보고서 작성기, DB 모바일 인터페이스, 데이터 수집 양식 등을 며칠, 짧으면 단 몇 시간만에 완성하고 배포할 수 있습니다. | 요구 사항 변화에 대한 적응력. 애자일 개발을 사용하면 요구 사항이 변경될 경우 향후 사이클에 신규 기능을 추가함으로써 수월하게 대응할 수 있습니다. 예를 들어 최신 휴대용 태블릿 지원, 생성형 AI 통합처럼 앱 개발 초기에는 생각지도 못했던 요구도 유연하게 수용할 수 있습니다. |
다음 각 사용 사례에 가장 알맞은 방법론으로 개발한 엔터프라이즈 애플리케이션의 3가지 예시입니다.
기업은 애플리케이션을 사용해 고객 및 직원을 지원하고, 비즈니스를 확장하고, 현장의 불편을 해소할 수 있습니다. 반면 애플리케이션 개발은 많은 비용과 자원이 필요하고, 새 소프트웨어에 보안 결함이 존재할 경우 기업과 고객에게 위험이 될 수 있습니다. 위험을 줄이고 성공 가능성을 높일 수 있는 모범 사례는 다음과 같습니다.
생성형 AI는 보고서 요약, 문장 작성, 고객 이메일 초안 작성, 대화 맥락 강화 등 텍스트 기반 작업에 널리 쓰이고 있습니다. 생성형 AI는 소프트웨어 코드 작성에도 강점을 보입니다. 프로그래밍 언어도 일종의 언어이고, 소프트웨어의 관점에서 자연어와 본질적으로 크게 다르지 않기 때문입니다.
애플리케이션 개발 분야에서 생성형 AI는 사람이 자연어로 표현한 의도를 실행 가능한 코드로 번역하는 데 유용하게 사용됩니다. 초기 실험 결과들에 따르면 생성형 AI가 작성한 코드는 기능적이고, 효율적이고, 보안성도 우수합니다. 특히 DB 액세스 코드나 마이크로서비스 셋업용 보일러플레이트처럼 반복적이고 번거로운 코드 작성에 유용합니다.
또한 생성형 AI는 사람이 쓴 코드를 점검해 오류와 잠재적 취약점을 찾고, 모범 사례에서 벗어난 부분을 지적하는 데도 도움을 줍니다. AI 기반 보조 기능은 메인스트림 개발 도구 및 플랫폼의 기본 기능으로 자리잡을 전망입니다.
소프트웨어 개발은 계속해서 진화하는 분야입니다. 앞서 언급했듯, 생성형 AI는 개발자를 반복 작업에서 해방시켜 줄 것입니다. 생성형 AI는 메인스트림 개발 도구에 내장되고 앱 개발의 필수 요소로 자리잡을 것입니다. 마이크로서비스와 같은 새로운 아키텍처는 모듈형 방식을 통해 신속한 앱 개발을 가능케 할 것입니다. 그러나 이 밖에도 주목할 만한 트렌드가 있습니다.
보안은 최우선 과제입니다. 보안 위협이 계속 진화하므로 애플리케이션 개발자들 역시 보안을 고려한 설계 및 개발은 물론 새로운 공격 도구에 대응하기 위한 지속적인 업데이트를 반드시 수행해야 합니다.
모바일은 일상이 되었습니다. 스마트폰이 많은 이들의 주요 컴퓨팅 장치가 되었으므로 기업 또한 모바일 전용 앱을 구축하거나 모바일 브라우저에서 사용할 수 있도록 앱을 설계해야만 합니다.
개발을 민주화해야 합니다. 직원들은 빠르게 자체 앱을 개발할 수 있는 노 코드/로우 코드 도구를 계속해서 요구할 것입니다. 품질과 보안을 유지하며 해당 도구들의 사용을 장려하기 위한 방법을 고민해 보아야 합니다.
Oracle은 어떤 앱 개발 프로젝트에도 대응할 수 있는 폭넓은 개발 도구, 서비스, 플랫폼을 제공합니다. 또한 Oracle은 귀사의 요구 사항에 맞춰 커스터마이징하고 통합할 수 있는 업계에서 가장 완전한 상용 비즈니스 애플리케이션 제품군을 제공합니다.
어디에 배포할까요? Oracle은 귀사의 요구 사항에 부합하는 데이터베이스, 개발자 서비스, 통합 서비스, 스토리지를 모두 갖춘 2세대 클라우드 서비스인 Oracle Cloud Infrastructure(OCI)를 제공합니다. 여기에 네트워킹, 분석 및 비즈니스 인텔리전스, 로우 코드/노 코드 도구, 비즈니스 애플리케이션이 활용할 수 있는 신규 AI 서비스 등이 더해집니다. 여기에 Oracle의 애플리케이션 보안, 규제 준수, 비용 관리 도구를 더하면 모든 준비가 끝납니다.
Oracle은 타사 클라우드 대비 우수한 가성비, 더 낮은 스토리지 비용, 세계 각국에 위치한 48개 상업 및 정부용 리전을 통해 귀사의 요구 사항에 더 잘 대응할 수 있습니다. 다음 프로젝트에 클라우드를 사용할 계획이 없으신가요? Oracle Exadata 엔터프라이즈 데이터베이스 플랫폼을 비롯한 Oracle의 온프레미스 시스템을 살펴보세요.
방대한 Oracle 개발자 기술 포트폴리오를 살펴보고, Oracle Cloud에서 애플리케이션을 무료로 구축, 테스트, 배포하는 방법을 확인해 보세요.
개발자 및 다른 동료들 모두 민첩성, 확장성, 효율성을 극대화하도록 설계된 클라우드 네이티브 애플리케이션의 혜택을 누릴 수 있습니다. AI 개발에 대한 자세한 정보를 살펴보고 클라우드를 더욱 발전시킬 수 있는 10가지 방법을 함께 확인해 보세요.
애플리케이션 개발자는 어떤 작업을 수행하나요?
애플리케이션 개발자는 비즈니스 애플리케이션을 구축합니다. 보다 정확히는 비즈니스 애플리케이션을 만드는 팀의 일원입니다. 개발자는 애자일 방법론, Java, SQL, Python, JavaScript 중 하나 이상의 개발 언어, 소프트웨어 아키텍처 등과 관련된 탄탄한 기술적 역량을 갖춰야 합니다. 개발자가 수행하는 구체적인 역할로는 아키텍처 설계, 코딩, 테스트/디버깅, UI 설계, 데이터베이스 연동, 리포트 작성, 소프트웨어 유지보수 등이 있습니다.
애플리케이션 개발의 단계는 무엇인가요?
애플리케이션 개발은 8가지 주요 단계를 거쳐 이루어집니다. 일부 단계는 병행할 수도 있고, 방법론에 따라서는 반복적으로 수행할 수도 있습니다.