개발자 / 데이터센터 / 애플리케이션

4세대 애플리케이션 모델을 이끄는 클라이언트-서버리스 탐구

Bob Muglia | InfoWorld 2020.07.03
마이크로소프트에 몸담았던 시절, 필자는 처음 두 번의 애플리케이션 모델 전환을 지켜봤다. 초기 메인프레임과 미니컴퓨터 시스템은 모놀리식이었고 데이터 스토리지와 애플리케이션 코드, 터미널 서비스가 모두 한 박스에 들어갔다.

1980년대에 마이크로프로세서와 이더넷 네트워크가 등장하면서 여러 대의 저비용 컴퓨터가 로컬 네트워크를 통해 함께 작동하고 통신할 수 있게 됐다. PC와 유닉스 워크스테이션이 서버에 연결되고 나서는 비즈니스 애플리케이션을 위한 새로운 다중 머신 클라이언트-서버 프로그래밍 모델을 활용하기 시작했다. 백엔드 SQL 데이터베이스(주로 오라클 데이터베이스 또는 SQL 서버)에 그래픽 사용자 인터페이스가 결합된 클라이언트-서버 애플리케이션이 등장했다. 
 
클라이언트-서버 애플리케이션이 구축된 방식은 모놀리식 애플리케이션과는 매우 달랐다. 프레젠테이션 코드는 클라이언트 컴퓨터에서 실행되고 비즈니스 로직은 서버에 위치하며 일반적으로 SQL 저장 프로시저 내에 캡슐화됐다.
 
ⓒ FaunaDB
 
필자는 30여년 전, 마이크로소프트에서 처음에 애쉬튼 테이트(Ashton Tate)/마이크로소프트 OS/2 SQL 서버를 담당하면서 그 시기에 시작된 클라이언트-서버 여정을 지켜봤다.
 
클라이언트-서버 애플리케이션은 비록 번성한 기간은 짧았지만, 수많은 소규모 기업에 최초로 컴퓨팅을 제공한 기반이 된 사용하기 쉬운 그래픽 애플리케이션이라는 새로운 세대를 만들었다. SQL 서버 저장 프로시저를 호출하는 비주얼 베이직 클라이언트 애플리케이션의 조합은 마이크로소프트의 서버 사업을 일으켰고 소프트웨어 업체와 부가가치를 더하는 리셀러로 구성된 하나의 완전한 산업을 창조했다. 클라이언트-서버가 레거시 접근 방식이 된 지 20년이 넘었지만 많은 기업이 클라이언트-서버 애플리케이션의 업데이트된 버전을 계속 사용하고 있다.
 
클라이언트-서버는 인터넷과 웹으로 인해 레거시로 밀려났다. 클라이언트-서버 애플리케이션은 로컬 영역 네트워크에 맞게 설계됐는데, 클라이언트-서버 애플리케이션에 사용된 번잡한 사유 프로토콜은 로컬 영역 네트워크에서 작동했지만 인터넷에 필요한 장거리에는 적합하지 않았다.
 

인터넷과 3계층 애플리케이션

1995년 봄, 빌 게이츠는 유명한 ‘인터넷 물결’에 대한 메모를 기점으로 마이크로소프트의 초점을 인터넷으로 옮겼다. 당시 필자는 윈도우 NT 프로그램 관리를 이끌고 있었으므로 “빌 인터넷 계획” 회의에 여러 번 참석했다. 마이크로소프트의 격동의 기간이 시작된 시점이었고 필자도 좋은 일도 불미스러운 일도 봤고 겪었다. 필자는 마이크로소프트에 있으면서 인터넷 경험과 그 이후 반독점 논란을 겪으며 많은 것을 배웠다. 중요한 교훈 중 하나는 기술 혁명이 어떻게 모두를 위한 새로운 윈-윈 기회를 창출하는지에 대한 것이다.
 
글로벌 인터넷 혁명은 새로운 세대의 개방형 표준 프로토콜과 형식으로 이어졌다. 새로운 기술에는 다른 인프라가 필요했다. 처음에는 단순한 웹 서버가 정적 웹사이트를 제공했다. 그러나 상업 및 기타 애플리케이션이 빠른 속도로 새로운 3계층 애플리케이션 모델의 부상을 이끌었다.
 
ⓒ FaunaDB

3계층 애플리케이션 모델은 인터넷 프로토콜로 말하는 웹 서버, 비즈니스 로직을 위한 애플리케이션 서버, 그리고 데이터베이스를 결합한다. 데이터베이스, 앱 서버, 웹 서버는 하나의 데이터센터 또는 클라우드 지역(region) 내에 위치한다. 이 세 가지가 함께 작동하면서 완전히 형성된 웹 페이지를 생성하고, 이 웹 페이지가 클라이언트의 브라우저에 렌더링된다. 실제 환경에서는 클라이언트 측 자바스크립트가 (최소한 필드 유효성 검사를 위해) 로컬 클라이언트 양방향성을 제공하는 것이 일반적이다. 로컬 브라우저 양방향성 수준은 시간이 지나면서 높아졌고 자바스크립트는 원격 API를 위한 REST, 데이터 형식을 위한 JSON과 같은 주요 산업 표준을 이끌었다.
 
3계층 애플리케이션 모델은 급격히 노화된 클라이언트-서버와 달리 우아하게 나이를 먹었다. 현재 웹 페이지 외에 API 서비스를 제공하는 데도 사용된다. REST를 기반으로 하는 표준 API 인터페이스의 발전을 기반으로 복잡한 비즈니스 로직을 글로벌하게 제공되는 서비스 내에 캡슐화할 수 있게 됐다. 이 서비스는 적절한 보안 인증 정보를 갖춘 모든 애플리케이션에서 호출할 수 있다. 3계층 애플리케이션 모델은 REST API 서비스를 제공하는 데 보편적으로 사용된다.
 
ⓒ FaunaDB
 

서버리스 API 바다의 브라우저

서비스가 API로 전달되고 클라우드 내에서 자동으로 확장/축소되고 사용량에 따라 가격이 정해질 때, 그것을 서버리스 서비스라고 한다. 서버리스에서 고객은 서버 인프라를 관리할 필요가 없다. 서버리스 서비스는 어디서나 적절하게 인증된 모든 디바이스에 제공되며 측정된 사용량에 따라 비용이 청구된다.
 
지금 우리가 사는 세계는 다채로운 강력한 모바일 및 휴대용 컴퓨팅 디바이스가 있는 연결된 세계다. 현재 이러한 모든 디바이스는 해당 디바이스의 네이티브 애플리케이션 품질에 근접하거나 어떤 측면에서는 뛰어넘는 최종 사용자 경험을 제공할 수 있는 호환 브라우저를 지원한다. 좋은 예가 브라우저를 사용해 여러 디바이스에 걸쳐 단절 없는 협업 환경을 제공하는 구글 문서다(Google Docs).
 
동시에, 새로운 SaaS 애플리케이션은 일체의 인터넷 호환 API로 재구상되고 있다. 이러한 API는 사용량 기반 과금을 사용해서 끊임없이 확장되는 다양한 서비스를 제공한다. 결제, 콘텐츠 관리, 물류, 주문 관리, 3D 인쇄 등 모두 어디서나(다른 서버, 모바일 애플리케이션, 브라우저) 호출 가능한 API가 되고 있다. 클라우드는 서버리스 컴퓨팅을 실현함으로써 이와 같은 움직임을 가속화하고 있으며 스트라이프(Stripe), 트윌리오(Twilio), 알골리아(Algolia)와 같은 신생 기술 기업이 새로운 사용량 기반 서비스의 리더로 부상했다. 

오랜 진화 끝에 브라우저는 전 세계적으로 연결된 서버리스 API 세계에 상주하는 편재적이며 프로그램 가능한 클라이언트가 됐다. 편재적 클라이언트와 방대한 서버리스 API의 바다가 결합된 결과 나타난 것이 새로운 클라이언트-서버리스 애플리케이션 모델이다.
 
ⓒ FaunaDB

클라이언트-서버리스의 최종 사용자 애플리케이션은 클라이언트에서 실행되면서 다양한 서비스를 호출한다. 클라이언트는 프레젠테이션을 처리하고 비즈니스 로직은 호출 가능한 서비스 내에 캡슐화된다. 네이티브 iOS와 안드로이드 애플리케이션은 클라이언트-서버리스의 예지만, 실제 움직임이 일어나는 곳은 브라우저이며 빠른 속도로 성장하는 업체로는 잼스택(Jamstack)을 들 수 있다. 클라이언트-서버리스는 앞으로 성숙해지면서 다양한 규모 또는 복잡성 수준의 소비자 및 비즈니스 애플리케이션을 지원하게 될 것이다.
 
클라이언트-서버리스는 비즈니스 프로세스를 조율하는 서버와 마이크로서비스에도 적용된다. 이 경우 서버 애플리케이션 또는 워크플로우 엔진이 클라이언트 역할을 하면서 서버리스 API를 사용해 원격 서비스를 호출한다.
 

잼스택과 클라이언트-서버리스 데이터베이스

잼스택의 JAM은 자바스크립트, API, 마크업을 뜻한다. 잼스택 애플리케이션에서 브라우저 마크업은 정적 HTML이며 가까운 CDN에서 바로 액세스가 가능하다. 애플리케이션은 브라우저 내에서 자바스크립트에 의해 인스턴스화되며 프레젠테이션 로직은 자바스크립트 브라우저 애플리케이션으로 실행된다. 클라이언트 애플리케이션은 원격 서비스 API를 호출한다. 잼스택은 위치에 관계없이 모든 클라이언트에 뛰어난 경험을 제공하며 생산성 높은 개발자 워크플로우를 실현한다.
 
잼스택 접근 방법의 장점은 매우 강력한 클라이언트 애플리케이션을 개발할 수 있다는 것이다. 모든 애플리케이션이 그렇듯, 잼스택 클라이언트-서버리스 앱에서 생성하는 데이터에도 안전하고 보안이 되며 트랜잭션 측면에서 일관적인 데이터베이스 스토리지가 필요하다. 3계층과 다른 점은 잼스택 애플리케이션에는 인터넷 어디에서나 사용할 수 있는 안전한 데이터베이스가 필요하다는 것이다. 기존의 SQL 및 NoSQL 데이터베이스는 모두 앱 서버 뒤에 있도록 설계되므로 잼스택 클라이언트 애플리케이션에서 직접 액세스하지 못한다. 기존 데이터베이스 중에는 새로운 세대의 클라이언트-서버리스 애플리케이션의 요구 사항을 충족하는 것이 없다.
 
잼스택은 클라이언트-서버리스 세계에 맞게 만들어진 데이터베이스를 필요로 한다. 서버리스 API의 바다에서 잼스택에 필요한 것은 서버리스 데이터 API다.
 
포나(Fauna)는 다른 데이터베이스와 다르다. 포나는 모든 클라이언트에 안전하고 어디서나 액세스가 가능한 데이터베이스 서비스를 제공하도록 설계됐다. 엄격하게 직렬화된 일관성, 최고 수준의 트랜잭션 일관성을 제공하여 애플리케이션의 정확성을 보장하며, 이를 최신 칼빈(Calvin) 알고리즘의 영향을 받은 프로토콜을 사용해 글로벌한 편재적 서비스로 제공한다. 포나를 사용하는 비즈니스 트랜잭션은 클라이언트-서버 저장 프로시저와 비슷하게 데이터베이스 내의 사용자 정의된 함수에 의해 수행된다. 포나 UDF는 저장 프로시저를 대체한다. 포나는 관계형 데이터베이스지만 SQL을 사용하지 않는다. 대신 자바스크립트 개발자에게 적합한 유연한 문서 모델을 노출하며 산업 표준인 그래프QL(GraphQL) API를 사용해서 효율적으로 데이터를 반환한다.
 
서버리스 API는 오늘날의 애플리케이션 개발자 관점에서 무엇이 가능한지를 재정의하고 있다. 이러한 가능성은 현재 시스템을 현대화하는 기업, 완전히 새로운 클라이언트-서버리스 애플리케이션을 구축하는 기업에 열려 있다. 예를 들어 넥스트도어(Nextdoor), 해넌 힐(Hannon Hill)과 같은 포나 고객사는 전 세계적인 활동 범위를 위해 서버리스 백엔드를 사용해서 기존 인프라를 확장한다. 매터 서플라이(Matter Supply), 베자매스(Bejamas)와 같은 부티크 스튜디오, 파로스(Faros)와 같은 신생 기업은 서버리스, 잼스택, 포나 생태계를 사용해 완전히 새로운 경험을 구축하고 있다.
 
애플리케이션 아키텍처 분야의 모든 혁명은 개발자가 이전에는 불가능했던 애플리케이션을 구축할 수 있게 해주는 새로운 데이터베이스의 탄생을 이끌었다. 필자는 포나 팀이 클라이언트-서버리스 세계에 맞게 만들어진 데이터베이스를 제공하는 과정을 설레는 마음으로 돕고 있다. 포나는 클라이언트-서버리스 애플리케이션을 위한 데이터 API다.
 
어디서나 액세스 가능한 클라이언트-서버리스 애플리케이션의 새로운 세계는 이제 막 시작되는 단계다. 클라이언트-서버와 3계층 아키텍처가 그랬듯이 클라이언트-서버리스 애플리케이션 모델도 업계의 모든 종류의 고객과 벤더를 위한 막대한 기회와 붕괴를 창출할 것이다. 새로운 개발자 세대가 잼스택으로 이 길을 앞장서서 이끌고 있다. editor@itworld.co.kr 

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.