Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

오늘 분석할 대상은 Shopify다. 아래 동영상을 기준으로 분석한다.

Shopify에 대해서

쇼피파이는 캐나다의 다국적 기업으로 이커머스 사업자를 위한 Payment, 마케팅, 배송, 고객관리도구를 포함한 일련의 서비스를 제공하는 플랫폼 회사다. 이커머스를 위한 모든 기능을 제공하기 때문에, 사업자는 신속하게 이커머스 비즈니스를 실행 할 수 있다. 이 기능에는 사이트 빌더도 포함하고 있는데, 코딩이나 디자인 기술이 없더라도 위지위그(WYSIWYG) 방식으로 이커머스 웹 사이트를 만들 수 있다. 코딩, 디자인 능력이 없어도 간단하게 웹 사이트를 만들 수 있는 워드프레스를 생각하면 된다.

Hello World

func rust() {
}
2021년 현재 175개국에서 1,700,000개 이상의 이커머스 비즈니스가 쇼피파이 플랫픔을 사용하고 있다. 2021년 현재 쇼피파이의 시가총액은 1934.56억으로 캐나다에서 가장 큰 뮤모를 자랑하고 있다. 2020년 한해 동안의 총수익은 29억 2900만 달러에 달했다.

Shopify의 역사

  • 2006년 Tobias Lutke와 Scott Lake가 스노보드 장비 온라인 스토어인 snowdevil을 오픈하기 위해서 설립.
  • 2006년 Shopify 플랫폼 출시. 처음에는 Liquid라는 오픈 소스 템플릿 언어를 이용했으며, 2006년부터 루비(Ruby)를 사용했다.
  • 2009년 6월 API 플랫폼과 App Store를 출시한다. 개발자는 API를 이용해서 Shopify 온라인 스토어용 애플리케이션을 만든 다음 Shopify 앱 스토어에서 판매할 수 있었다.
  • 2010년 시리즈 A 7만 달러 투자 유치
  • 2011년 시리즈 B 15만 달러 투자 유치
  • 2012년 모바일 소프트웨어 개발사인 Select Start Studios Inc 인수.
  • 2013년 디자인 스튜디오 Jet Cooper 인수
  • 2013년 Shopify Payments 출시. iPad 중심의 POS 시스템 출시. iPad를 이용하여 직불 카드 및 신용 카드 결제 수락
  • 2013년 시리즈 C 1억달러 투자 유치
  • 2014년 대규모 전자 상거래 비즈니스를 위한 엔터프라이즈 솔류션 "Shopify Plus"의 출시
  • 2015년 뉴욕 증권 거래소와 토론트 증권 거래소에 "SHOP", "SH"로 기업 공개(IPO) 신청.
  • 2015년 9월 Amazon.com은 판매자를 위한 Amazon Webstore 서비스를 폐쇄할 것을 발표하고, 선호하는 마이그레이션 제공 업체로 Shopify를 선택.
  • 2016년 Boltmade 인수. 플래시 판매를 향상시키기 위한 Frenzy를 출시. 모바일 제품 개발 스튜디오 Tiny Hearts의 인수
  • 2017년 Shopify 판매자가 Amazon에 판매할 수 있도록 Amazon과 통합.
  • 2017년 오프라인 소매 구매를 위한 Bluethooth 지원 직불 카드 및 신용 카드 리더를 도입. Square에서 제공하는 것과 유사한 Dock/Retail Stand가 있는 POS 시스템등을 포함하는 소매업체 지원 기술의 출시
  • 2018년 로스앤젤레스에 첫번째 오프라인 공간을 오픈. Shopify 소프트웨어 및 워크샵, 교육을 제공.
  • 2019년 풀 서비스 TV 및 영화 콘텐츠 및 프로덕션 하우스인 Shopify Studios 출시 발표.
  • 2019년 개인 정보 및 데이터 수집과 관련된 분쟁에 대한 통합 계약 종료.
  • 2019년 Snapchat Story 광고를 구매/관리 할 수 있도록 Snapchat와의 통합을 발표.
  • 2019년 Shopify 매장을 방문하는 고객과 실시간 대화를 나눌 수 있는 Shopify Chat를 출시. 주문 처리 솔류션 회사인 6 Riber Systems의 인수.
  • 2020년 Diem Association 가입 계획 발표. 완전 원격 전환. 국경 간 결제를 지원하기 위하여 Alipay와의 파트너십 발표.
  • 2021년 주택 개조 항목을 디지털로 미리 확인 할 수 있는 AR 앱인 Primer의 인수.

Shopify 분석 작업에 대해서

우리는 Shopify 서비스를 분석 할 것이다. 이커머스는 프론트 앤드, 백앤드, Payment, 주문, 배송, 상품(Products), 구매자, 사업자(몰 운영자), CRM, BI, 각 종 백오피스, 데이터베이스, 미디어처리, 메시지 처리, API를 포함한 매우 복잡한 시스템이다. 이러한 복잡한 시스템이 어떻게 구성되는지를 살펴보는 것은 엔지니어에게는 매우 흥미로운 과제가 될 것이다. 특히 나는 이커머스 업계에서 일을 하고 있기 때문에, 이러한 시스템을 분석하는 것은 시스템 개발에 큰 도움이 될 거라 생각한다.

핵심 키워드

Shopify와 같은 이커머스는 매우 거대한 시스템이다. 분석의 넓이 깊이 모두 한계가 있을 수 밖에 없으므로, 핵심 키워드를 선정하여서, 키워드 위주로 분석하려 한다. Shopify는 "쇼핑몰을 운영하는 사업자", "소핑몰로 부터 상품을 구매하는 구매자", 2개 타입의 유저가 있다. 구매자는 "고객", 사업자는 "점주(owner)"로 부를 것이다.
  • 고객
  • 프러덕트(판매할 상품)
  • 주문
  • Payment
  • 점주
  • 격리(Isolation)
  • Plugin
  • Store Front & Backend
  • API
고객, 프러덕트, 주문, Payment, 점주는 커머스를 위한 일반적인 것들이니 "격리, Plugin, Store Front/Backend, API" 이 부분에 대해서 간단히 살펴보자.

Shopify의 1차 고객은 "점주"이므로 시스템을 구성 할 때 점주는 어떤 성향을 가지며(페르소나), 그들이 원하는 것을 이뤄주기 위해서 어떤 기능이 필요할지 예상을 해야한다.

Shopify 혹은 이와 유사한 플랫폼을 이용해서 온라인 비즈니스를 하려는 사람들은 이커머스에 대한 최소한의 배경지식들을 가지고 있을 것이다. 어떤 사람들은 디지털에 대한 지식도 함께 가지고 있는 반면 어떤 사람은 커머스에 대한 배경지식을 가지는 정도의 차이정도는 있을 것이다.

이들 점주는 오라인 상에서 다른 상점과 가능한 격리된 나만의 상점을 만들고 싶어 할 것이다. 격리(Isolation)는 기술 뿐만 아니라 점주의 입장에서도 필요한 비즈니스 기능이 될 수 있는데 이를 통해서 법적구성요소를 만족해야 한다. Shopify위에서 호스팅을 하고 싶지만 법적 요구사항을 만족하지 못한다면 쉽게 선택 할 수 없을 것이다. Shopify는 전셰계를 대상으로 하는 플랫폼이므로 아래와 같은 격리 수준을 달성해야 한다.
  1. 온라인 몰이 호스팅되는 지역
  2. 내 제품, 주문, 고객, 관리등의 정보와 이를 담고 있는 데이터가 논리적으로 격리되어 있는가.
  3. 원할 경우 물리적으로 격리된 환경에 몰에 구축 할 수 있는가.
점주는 상품을 전시, 소개, 판매하기 위해서 사이트 페이지를 만들고 디자인해야 한다. 다양한 고객이 있기 때문에 웹 사이트는 쉽게 디자인 할 수 있으면서 동시에 커스터마이징 가능해야 한다. 그리고 데이터를 처기하기 위한 백앤드도 있어야 한다.

Shopify는 "이머커스 API"를 제공하고 있다. 우리는 여기에서 이커머스의 기능이 API 형태로 분리되어 있음을 추측할 수 있다. 이커머스의 기능을 API로 분리하는 이러한 비즈니스 모델을 헤드리스 이커머스라고 한다. 헤드리스 이커머스라는 이상한 용어로 부른다고 해서 머리아파 할 필요는 없다. 다른 인터넷 산업에서 일반적으로 사용하는 OpenAPI를 듣기 좋게 만든 비즈니스 용어일 뿐이다.

기타 인증같은 요소들이 있는데, 범위가 너무 넓어지니 다루지 않도록 하겠다. Shopify를 이커머스 플랫폼으로 만들게 하는 핵심 요소를 파악하는게 목적이다.

핵심 기능

  • 자동화된 상점 생성 : 점주가 Shopify를 사용하는 이유는 HTML, CSS, Javascript, PHP ...등의 기술을 모르더라도 몇 분 혹은 몇 시간안에 디자인을 포함하여 제품을 판매할 수 있는 온라인 몰을 만들 수 있기 때문이다.
  • Backend : 상점을 생성하면, 인터넷상에 서비스되도록 여러 백앤드 기능이 작동한다.
  • 인프라 : 웹 사이트의 호스팅, 도메인 연결, DDoS 공격 방지를 위한 프록시 설정 등 네트워크적인 것들을 살펴본다.

오프라인 상점 분석

점주가 원하는 것은 온라인에 "상점"을 오픈하는 거다. 그리고 온라인에 상점의 구성요소를 조율해서 작동하게 만들고 여기에 상품(Products)를 배치하여 고객이 들어올 수 있도록 만드는 것은 오프라인 상점을 만드는 것과차이가 없다. 그 공간이 오프라인인지 온라인인지의 차이만 있을 뿐이다.

그리하여 이커머스는 오프라인 커머스를 디지털화하는 것이 중요한 과업이다. 이러한 과정을 우리는 DT(디지털 트랜스포메이션)이라고 한다. 대략 2019년부터 금융/커머스 업계의 화두중 하나가 디지털 트랜스포메이션이기도 하다.

따라서 온라인 상점을 제대로 이해하기 위해서 오프라인 상점의 구성요소를 살펴볼 필요가 있다. 오프라인 상점의 구성요소들을 살펴보고, 이 것들을 어떻게 디지털화 하면 될지를 고민해보자.

 오프라인 상점

오프라인 상점은 하드웨어와 소프트웨어로 구성된다. 하드웨어는 물리적 공간이고 소프트웨어는 상점을 운영하기 위한 여러가지 정책과 정책을 수행하기 위한 툴들의 집합이다.

  1. 오프라인 건물을 온라인에 올려야 할 것이다. 가장 일반적으로 생각 할 수 있는게 상점용 웹 사이트다. 상점용 웹 사이트는 상점디자인, 전시가 가장 중요한 기능이다.
  2. 오프라인에서 사용하던 POS 기반의 Payment 시스템을 온라인 환경에 맞게 구성해야 한다. PG(Payment Gateway)를 연동하게 될 것이다.
  3. 고객관리, 상품, 재고 관리, 마케팅, 배송.
  4. 매장의 보수, 새로운 디자인, 새로운 기능(물리, 소프트웨어적)의 도입
DT는 이러한 오프라인의 모든 것들을 디지털화 하는 작업이다. 그냥 소프트웨어만 개발한다고 되는 것이 아니다. 각 구성요소의 유기적인 결합, 이에 따른 업무 프로세스와 조직의 변경 등 광범위한 부분에서의 변화가 이루어진다. 예를들어 고객관리/커뮤니케이션도 소셜인증과 소셜 네트워크 기반으로 이루어질 것이다. 오프라인에서의 마케팅의 수행, 마케팅 추적, 통계도 온라인에서는 완전히 달라진다.

Shopify는 온라인 매장을 원하는 점주에게 이러한 모든 것을 제공할 수 있어야 한다.

Shopify 의 구조

오프라인 몰을 분석하면서 Shopify에서 서비스해야 하는 것들을 큰 틀에서 확인 할 수 있었다. 이 정보들을 토대로 Shopify의 구조를 높은 수준(High-Level)에서 조망해보자.

Shopify는 아래의 것들을 제공해야 한다.
  • 쇼핑 몰 사이트 : 상품을 전시(디자인)하고 설명하고 판매 할 웹 사이트.
  • 쇼핑 몰 기능 : 쇼핑 몰의 핵심기능은 상품, 주문, 배송 이다. Shopify는 이커머스 기능을 API로 제공한다고 했다. 따라서 이 기능은 분리가 될 것이고, 이를 구조화 해야 한다.
쇼핑 몰 사이트를 제공하는 방법을 좀 더 살펴보자. Shopify는 개발자와 디자이너가 없더라도 쇼핑 몰을 운영할 수 있도록 하고 있다. 워드프레스의 템플릿처럼 미리 정의된 디자인을 포함한 템플릿을 고객에게 제공해야 한다. 고객은 템플릿을 수정해서 자신만의 디자인과 기능을 만들 어서 배포 할 테다. 이를 위해서 아래의 기능이 필요하다.
  • Store Orchestrator : 템플릿 엔진을 이용해서 디자인과 기능을 배치하여 새로운 몰을 생성한다.
오프라인 매장을 생각해보자. 매장을 차리고 나면, 점주는 매장의 성장에 따라 다양한 기능들을 추가하려 할 것이다. 더 빠른 배송 시스템, 고도화된 고객 관리 소프트웨어의 도입, 재고 관리 시스템, 더 편리한 지불 수단 등이 그것이다.

Shopify는 플러그인(Plugin)을 이용해서 쇼핑 몰을 확장 할 수 있다.

Shopify에서 쇼핑몰을 운영하기 위한 필요한 핵심 적인 것들이 정리된 것 같다.
  1. 쇼핑몰 사이트
  2. 이커머스 기능을 사용하기 위한 API
  3. 쇼핑몰을 만들어주기 위한 Store Orchestrator
  4. 쇼핑몰을 확장하기 위한 플러그인
이들 정보를 토대로 Shopify의 구조를 묘사해보자. High-Level 컴포넌트 구성도 정도가 될 것이다.

 쇼피파이 구성도

쇼핑 몰의 제작

점주는 개별적인 (shop-1, shop-2로 표현된)쇼핑 몰을 가질 것이다. 이들 쇼핑 몰은 웹페이지를 가지고 있을테다. 이 웹페이지가 오프라인 공간에서의 물리적인 공간이 된다. 점주는 이 웹페이지를 이용해서 디자인을 하고, 상품을 전시하고 판매한다.

Shopify는 개발자와 디자이너 없이 간단하게 쇼핑몰을 구축할 수 있도록 하는게 주요 비즈니스 모델이다. 이 목적을 달성하기 위해서 디자인과 전시기능을 포함한 미리정의된 템플릿(Template)를 제공한다. 점주는 원하는 디자인을 가지는 템플릿을 선택하고, 자기 맘에 맞게 수정(커스터마이징) 하고 발행하면 즉시 쇼핑몰이 만들어진다.

디자인과 전시를 포함하는 중요한 영역으로 독립적인 마켓플레이스를 운영하고 있다. 그자체로 비즈니스 모델을 만들고 있다.

 shopify 테마

점주는 템플릿으로 부터 자신의 쇼핑 몰을 만들게 될건데, 이 과정을 나타내보자.

 쇼핑몰 제작 과정

처음 상점을 제작 할 때는 (shopify가 제공하는)템플릿원본 중 마음에 드는 것을 선택하여, 에디터를 이용해서 편집할 것이다. 편집이 끝나면 사용자 템플릿 저장소에 저장될 것이다.

사용자 템플릿 저장소에는 어떤 것이 저장 될까. 아마도 디자인과 플러그인(Plugin)들과 배치 정보들이 있을 것이다.
  • 디자인 : 블럭의 위치, 블럭이 포함하는 여러 디자인 요소의(HTML, CSS, JavaScript) 정보
  • 플러그인 : 플러그인의 위치, 플러그인이 포함하는 디자인 요소의(HTML, CSS, JavaScript) 정보
템플릿 저장소에 사용자의 템플릿이 저장되면, 템플릿을 "변환하는 작업을 하게 될 것이다." 변환이되면 HTML, CSS, Javascript로 구현된 완전한 하나의 페이지가 만들어진다.

Static Page가 저장되고 Javascript로 동적으로 변경되는 데이터를 읽어오기 때문에 이론적으로 쇼핑몰을 구성하는 전체페이지를 캐시 할 수 있을 것 같다. 실제 가능 할지 가설로 검증해보자.

  • 서버사이드 랜더링(SSR) : 페이지를 이동할 때마다 새로운 페이지를 요청하는 방식이다. 데이터가 변경되는 부분은 Javascript로 모두 읽어와서 브라우저로 표현 할 수 있기 때문에 캐시로 서비스 할 수 있다.
  • 클라이언트사이드 랜더링(CSR) : JavaScript는 DOM을 제어 할 수 있다. 따라서 index.html 파일만 가지고, 기타 모든 내용은 .js 파일과 DOM 조작을 통해서 표현 할 수 있다. 데이터는 REST API로 가져올 수 있으므로 SSR과 마찬가지로 캐시로 서비스 할 수 있다.

쇼핑몰의 오케스트레이션

이렇게 해서 쇼핑몰 페이지를 만들었다. 클라이언트(웹브라우저)가 특정 고객의 쇼핑몰을 요청하면, 이를 호스팅 해줘야 한다. 호스팅을 위해서 아래와 같은 기능들의 조율(오케스트레이션)이 필요하다.
  • 요청 도메인을 읽는다.
  • 도메인 정보를 토대로 템플릿을 읽는다.
  • 템플릿과 데이터베이스를 연결한다.
  • 쇼핑몰을 방문한 소비자는 상품목록 요청, 상품구매(주문)등의 작업을 요청할거다. 이들 작업을 위해서 shopify는 API를 제공한다.
이들을 조합하면 아래와 같은 쇼핑몰 환경을 설계 할 수 있다.

플러그인

플러그인은 상점을 확장하기 위한 도구들의 모음이다.

격리

온-프레미시

복원력

유지/관리