Web2.0은 오픈소스를 위한 세계
지금까지의 기업 컴퓨팅 환경은 서비스 중심이였다. 자원에 대한 전적인 권한을 기업이 가지고 있었으며, 서비스 제공자와 서비스 사용자가 엄격히 구분되어 있었다. 이러한 환경에서 기업은 자신들이 분명히 제어할 수 있는 환경을 원하기 마련이다. 그래서 매우 강력한 몇개의 컴퓨터와 이들 컴퓨터에 최적화된 상용 운영체제와 상용 소프트웨어를 이용한 정형화된 컴퓨팅 환경을 선호했었다. 성당모델을 따르는 환경이라고 할 수 있는데, 단지 몇개의 강력한 컴퓨터와 훌륭한 메뉴얼이 제공되는 소프트웨어를 사용하는 것으로 관리의 복잡성을 줄일 수 있었기 때문이다.
그러나 플랫폼 중심의 Web2 환경으로 넘어오면서, 기존의 컴퓨팅 환경도 변화하게 된다.
기존에는 단지 몇대의 강력한 컴퓨터만을 이용해서 데이터를 다루고, 서비스를 할 수 있었으나, 데이터의 양이 극적으로 늘어나면서 수백/수천 심지어는 수만대의 컴퓨터를 이용한 서비스도 심심찮게 볼 수 있게 되었다. 여기에 서비스 제공자와 서비스 이용자가 분리되어 있던, Web1.0 시대와는 달리 MashUP(:12)서비스가 늘어나면서, 서비스 제공자와 서비스 이용자의 경계가 애매모호해 지게 되었다.
이제는 누구나 자신의 블로그 혹은 홈페이지를 통해서 맵, 온라인 경매, 온라인 서점, 개인화 검색 서비스, 동영상 서비스를 할 수 있게 되었으며, 가능한 서비스의 갯수도 점점 늘어날 것이다.
여기에서 기존의 컴퓨팅 페러다임에 대한 문제가 발생하게 된다. 일단 처리해야 하는 데이터의 양이, 컴퓨터의 처리능력을 초과해 버렸다. 아무리 강력한 컴퓨터를 사용한다고 하더라도, 단일 컴퓨터로는 입력되는 방대한 양의 처리가 불가능하게 되었다. 때문에 분산/병렬 컴퓨팅 환경을 구성해야될 필요성을 느끼게 된다. 이러한 Web2.0의 환경에서 아래와 같은 이유들 때문에 오픈소스 소프트웨어와 오픈소스 운영체제가 전략적인 요소로 자리매김 하게 될 것이다.
대부분의 기계가 그렇듯이, 성능이 일정 수준이상 넘어가면 성능대비 가격 효율이 급격하게 떨어지게 된다. 10이 달성할 수 있는 최고 성능수준이라고 가정해보자. 3의 성능에서 6의 성능까지 올리는데에는 20의 자원으로 가능했다고 하면, 6에서 9로 올리는데에는 100 이상의 비용이 들어가게 된다. 구축하는데에도 엄청난 비용이 들어가지만, 유지보수 하는 것도 장난이 아니다. 시스템 하나하나가 강력하기 때문에, 하나의 시스템에서 문제가 생길경우, 전체분산시스템의 성능이 크게 떨어질 수 있기 때문이다. 거기에, 컴퓨터의 능력보다 처리해야 하는데이터의 증가속도가 더 빠르기 때문에, 계속적으로 값비싼 시스템을 추가해야 하는 부담까지 떠안게 된다. 이런 시스템은 관련 기술자를 찾는 것도 매우 어렵다는 문제점을 가진다. 분산 환경을 값비싼 소수의 컴퓨터로 구성하게 될경우, 밑빠진 독에 물붓기 식으로 비용이 증가하게 될 것이다. 이렇게 엄청난 비용을 투자해서 시스템을 갖춘다고 해도, 2년도 채 안되어서 구식 시스템이 되어버리는 문제가 생긴다.
이러한 분산환경은 강력한 몇개의 컴퓨터대신에, 적당한 성능을 가진 저렴한 다수의 컴퓨터로 구성하는게 훨씬더 유리하다. 10대의 슈퍼컴퓨터로 분산컴퓨팅 환경을 만드는 것보다 100대의 서버급컴퓨터로 만드는게 훨씬 비용이 적게 든다는 얘기가 된다. 한대 한대의 컴퓨팅 파워가 약하기 때문에, 컴퓨터 몇대에 문제가 생기더라도 전체 분산환경에 미치는 영향도 그리 크지 않다. 또한 저렴하기 때문에 쉽게 시스템을 추가할 수 있으며, 데이터의 증가에도 유연하게 대처할 수 있다. 관련 기술도 쉽게 확보할 수 있다는 잇점을 가진다. 실질적으로 거의 대부분이 분산환경이 저렴한 다수의 컴퓨터를 활용하는 방식으로 구성되고 있다.
이러한 분산환경에서 오픈소스는 진가를 발휘하게 된다. 웹 플랫폼을 위해서 500대의 컴퓨터를 사용해야 한다고 가정해보자. 이 환경을 구성하기 위해서 상용 운영체제를 사용할 것인가 ? 수백만원이 넘는 값비싼 상용 소프트웨어를 사용할 것인가 ? 과거 Web1.0 시대라면, 컴퓨터 자체가 강력하고 워낙에나 비쌌기 때문에 소프트웨어의 가격이 좀 비싸다고 해도, 큰문제가 되지 않았겠지만 수백대의 저렴한 컴퓨터에 사용하기에는 비용이나 효과면에서 너무 비효율적이다. 나라면 Linux(:12) 운영체제(:12)와 Mysql(:12), Postgresql(:12)등의 공개소프트웨어를 이용해서 시스템을 구성할 것이다.
기존의 패러다임으로 분산환경을 구축하는데에는 비용도 문제가 되지만, 지나치게 경직되어 있다는 근본적인 문제를 가진다. 기존의 상용 운영체제와 소프트웨어들은 자신들이 제시한 환경을 고객에게 강제하는 스타일이다. Web1.0 시대라면 이게 문제가 되지 않는다. 그냥 그들이 원하는 대로 시스템을 꾸리고, 서비스를 거기에 맞게 튜닝하면 되기 때문이다.
그러나 Web2.0환경에서는 그러한 방식이 적용되지 않는다. Web2.0은 사용자에게 서비스를 제공하는 환경이 아닌, 플랫폼을 제공하는 환경으로, 다양한 서비스들과 플렛폼이 유동적으로 연결되는 일종의 EchoSystem(생태계)의 성격을 가지게 된다.
500대의 시스템으로 이루어진 분산환경을 예로들어 보겠다. 분산파일시스템(:12), 분산연산시스템을 만든다면 응용 프로그램에서 뿐만 아니라, kernel(:12) 수준에서의 수정작업이 필요할 수 있다. 상용운영체제에서는 불가능하다. 획일화된 서비스가 아닌, 다양한 서비스가 개발되어야 하기 때문에 쉽게 수정이 되며, 분기가능한 소프트웨어가 있어야 한다. 역시 상용 소프트웨어에서는 불가능하다. 제한적으로 가능하다고 하더라도, 별도의 비용과 정치적인 문제로 많은 시간이 소비된다.
상용소프트웨어는 더 안전하고 강력하다고 반론을 제기할 수도 있을 것이다. 물론 상용 소프트웨어는 여전히 쓰일 수 있을 것이다. 그러나 Web2.0에서의 플랫폼은 애시당초 적당히 견고하고, 적당히 강력한 환경의 구성을 지향점으로 하고 있다. 따라서 소프트웨어 역시 적당히 견고하고 적당히 강력하면 된다. 굳이 비싼 비용을 들여서 매우 견고한 환경을 만들 필요는 없다. 정리하자면 적당히 견고하고, 적당히 강력하며, 매우 유연한 환경이 Web2.0 플랫폼의 지향점이다.
오픈소스 소프트웨어는 상용 소프트웨어로는 결코 얻을 수 없는 유연성을 보장한다. 상용 소프트웨어 만큼의 견고함은 아니라 하더라도, 충분한 수준의 견고함을 확보하고 있으며, 표준을 따르며, 소스코드를 직접 제어할 수도 있다. 일정 수준이상의 개발자혹은 커뮤니티를 확보하고 있다면, 상용 소프트웨어보다 훨씬 빠르게 문제점을 찾아서 해결할 수도 있다.
최근 포탈사이트와 Web2.0을 표방하는 기업들을 중심으로 오픈소스 커뮤니티를 직접적으로 지원하며, 관련 개발자를 확보하려는 이유가 여기에 있다.
위의 상황은 Web2.0을 핵심전략으로 삼고 있는 포털급의 규모를 가진 회사에나 적용가능한 것 아닌가라고 반론을 제기할 수도 있을 것이다. 웹서비스, 웹플랫폼은 주변요소가 아닌 핵심요소가 되었다. MS사가 이 흐름에 대항하려고 시도했었지만, 결국은 흐름을 인정하고 방향을 선회했다. 또한 큰 규모의 회사가 움직이면, 산업역시 거기에 맞추어서 재편이 될 수 밖에 없다.
오픈소스에 관심을
우리나라의 경우 오픈소스에 대한 관심과 이해가 취약한게 사실이다. 학생들도 재미삼아서 혹은 보험용으로 다루는 경우가 많은 것으로 알고 있다. 그러나 앞으로 상황은 바뀌게 강력한 웹플랫폼 될 것이다. 변두리에서 벗어나서 소프트웨어 산업의 핵심요소로 자리매김 하게 될 것이다. 오픈소스에 조금더 관심을 가져보기 바란다. 재미도 있을 뿐더러, 많은 도움이 될 것이다.
강력한 웹플랫폼
이제 웹은 단지 개별 콘텐츠와 서비스를 제공하는 기술로서가 아니라, 다양한 응용과 서비스를 연동하고 제공하기 위한 명실상부한 플랫폼이 되어가고 있습니다. 기술적으로도 과거 웹 기술이 단지 브라우저와 서버 기술에만 초점을 맞추었다면, 최근에는 HTML5를 중심으로 리치 웹 애플리케이션 기술, 시스템 API 강력한 웹플랫폼 기술, 서비스 플랫폼 기술, 웹 운영체제 기술들과 같은 플랫폼 지향적인 기술개발 및 제품개발이 진행되고 있습니다.
1989년 CERN의 팀 버너스 리에 의해 만들어진 월드 와이드 웹 기술은 HTML(HyperText Markup Language), URL(Unified Resource Locator), HTTP(HyperText Transfer Protocol)이라는 세 가지 기술을 기초로 간단한 문서와 자원들을 공유하기 위한 목적으로 출발하였습니다. 이후 1994년 기술 표준화를 위한 W3C(World Wide Web Consortium)가 창립되면서 강력한 웹플랫폼 강력한 웹플랫폼 웹 기술은 눈부신 진보와 함께 인류 생활에 있어 없어서는 안 될 중요한 기반 기술로 발전해 왔습니다.
초기에 단순히 정적인 문서 형태 정보를 공유하는 기술(web of document)에서, 서로 다른 서비스를 연결하는 기술(web of services)과 서로 다른 원격 데이터들을 연결하는 기술(web of data)로 진화하였고, 이제는 단말의 HW를 제어하고 연결하는 단계(web of devices)를 넘어, 클라우드를 통해 정보를 공유 제공할 수 있도록 하며 모든 사물을 연결하는 단계(web of things)로 까지 진화하고 있습니다.
2012년 6월 현재 전 세계에는 7억 개의 웹 사이트가 공식적으로 서비스를 제공하고 있는 것으로 추정되고 있고, 이 중 실제 작동 중인 사이트도 2억 개에 이르며, 비공식적으로 웹 서버 기능까지 내장한 장치들을 포함한다면 실제로는 2~3개 정도 규모가 될 것으로 예상하고 있습니다. 인터넷 사용자의 대부분은 하루 평균 2시간 이상을 인터넷에 접속하며, 이 중 70%가 넘는 시간을 뉴스, 쇼핑, 상거래, 소셜 서비스, 엔터테인먼트 등 웹 기술로 만들어진 서비스들을 사용하며 즐기고 있습니다.
사실상 웹은 인터넷의 전부이며, 인터넷이 웹이라고 해도 과언이 아닌 시대에 살고 있으며, 단지 개별 콘텐츠와 서비스를 제공하는 기술로서가 아니라, 점점 더 다양한 응용과 서비스를 연동하고 제공하는 대표적인 플랫폼이 되었다고 할 수 있습니다.
웹 기술의 진화
웹 기술의 진화 발전 과정을 살펴보면 그림과 같이 크게 4단계로 구분해 볼 수 있습니다.
첫 번째 단계는 1989년부터 1999년까지의 기간으로 HTML, URL, HTTP라는 세 가지 기술에 기초에 웹 기술이 제안되고 보다 나은 인간 중심의 정보 처리 및 지식 공유 등을 목표로 하는 단계였습니다. 두 번째 단계는 2000년부터 2004년까지의 기간으로 XML에 기반하며 인간 중심의 정보 처리뿐 아니라 다양한 디바이스와 서비스, 멀티미디어를 연결하는 것을 목표로 하는 단계였습니다. 세 번째 강력한 웹플랫폼 단계는 2005년부터 2009년까지로, 구글, 아마존, 위키피디아 등의 성공과 함께 웹 산업을 제 2의 전성기로 이끌며 다양한 신규 서비스가 등장할 수 있는 기반을 만들었습니다.
그리고 마지막 네 번째 단계는 2010년 이후부터 현재까지로, 스마트폰 및 태블릿 등 다양한 모바일 기기들을 대상으로 HTML5와 web API를 통해 한 단계 진화된 웹 응용 환경을 제공하며 위치 정보 및 소셜 정보 등을 결합하는 통합 응용 플랫폼으로서 강력한 웹플랫폼 웹이 자리잡아 가는 단계라 할 수 있습니다. 이러한 웹 기술은 웹 마크업 기술을 기반으로 웹 애플리케이션 기술, 그리고 웹 플랫폼 기술로 진화하고 있습니다.
HTML5와 브라우저 기술
웹 기술이 확산된 가장 큰 배경은 HTML이라는 장치 독립적 표현 언어를 이용하여 정보를 표현하고, 이를 다양한 단말에서 브라우저라는 응용 프로그램으로 접속하여 활용할 수 있게 함으로써, 언제 어디서는 표준 브라우저만 있으면 웹을 사용할 수 있다는 단말 플랫폼 비종속적인 장점을 가질 수 있었기 때문입니다. 그림과 같이 1993년 HTML 1.0 규격이 만들어지고 난 후, 1997년 HTML 4.0과 1999년의 HTML 4.01 규격이 만들어지기까지 웹 기술은 폭발적으로 성장하였지만, HTML 자체가 갖는 확장의 어려움으로 W3C에서는 1999년부터 좀 더 다양한 확장성을 가질 수 있도록 하기 위해 XML을 기반으로 하는 새로운 XHTML(Extensible Hypertext Markup Language) 1.0 개발을 추진하였고, 2009년까지 XHTML 2.0 개발을 진행하여 왔습니다.
그러나 HTML은 단순함을 가졌으나 확장이 어려웠고, XHTML은 확장성은 좋았으나 지나치게 복잡하다는 단점을 가졌었습니다. 이러한 이유로 XHTML 표준화는 계속 지연이 되었고, 이에 다양한 기술적인 진화 내역들을 흡수한 새로운 마크업 언어를 필요로 했던 업계 전문가들이 2004년 WHATWG(Web Hypertext Application Technology Working Group)를 구성하고 다양한 웹 애플리케이션에 효과적으로 사용할 수 있는 보다 단순하면서도 다양한 확장성을 갖는 HTML 5.0 규격을 만들기 시작하였습니다. 이에 W3C는 2008년 새로운 HTML 규격을 만들기 위한 HTML WG를 구성하였고, WHATWG의 규격을 기초로 한 새로운 HTML5 표준안은 만들기 시작하였습니다. HTML5 표준의 가장 큰 특징은 기존의 HTML 표준의 한계를 극복하기 위해 별도의 추가적인 확장 기능 없이도 과거에는 불가능했던 다양한 처리들을 가능하게 하는 것에 있습니다. 이를 위해 HTML5에서는 다음과 같이 웹 애플리케이션 개발에 도움을 줄 수 있는 다양한 기능과 API를 제공하고 있습니다.
HTML5 표준안은 아직 초안 상태로 앞으로도 많은 수정과 보완 작업이 필요할 것으로 예상되고 있지만, 현재 스펙을 기준으로 한 구현은 이미 대부분의 브라우저에서 구현되어 동작되고 있습니다. 구글, 애플, 모질라, 마이크로소프트 등을 비롯한 많은 브라우저 개발사들은 브라우저 기능 개선과 함께 자사 규격을 표준에 반영하고 서비스 개발에 반영하기 위한 확장 노력을 병행하고 있습니다.
웹 애플리케이션 기술
2005년 이후로 웹 2.0의 성장과 함께 다양한 신규 응용과 기술들이 등장하기 시작하였습니다. 이 중에서도 가장 많은 변화를 일으킨 부분은 RSS/Atom 등의 XML 데이터 조각을 이용한 서비스 연동 기술과 AJAX와 같은 비동기식 처리 기술, 브라우저 및 JavaScript 가속화 기술, Open API 와 매시업 기술 분야 등이었고, 이러한 기술들을 종합하는 웹 애플리케이션 기술 분야에서 많은 발전이 있었습니다. 일반적으로 "웹 애플리케이션"이라는 용어는 HTTP를 통해 전달되는 웹 페이지(XHTML 또는 그 변이형과 CSS, ECMAScript로 구성되는)의 집합체들이 웹 브라우저 내에서 애플리케이션 같은 환경을 제공하는 것을 말합니다. 즉, 웹 애플리케이션은 여러 페이지를 거치는 대화형 처리 절차를 가지며, 이를 위한 상태 유지와 데이터 유지를 필요로 한다는 점에서 단순한 웹 콘텐츠와는 구분됩니다. 일반적으로 웹 애플리케이션의 경우 별도 프로그램의 설치 없이도 표준 브라우저만 있으면 계속 업그레이드된 기능을 사용할 수 있고, Open API 등을 통해 손쉽게 매시업할 수 있도록 기능을 제공하는 등 재활용을 할 수 있다는 장점을 갖는 반면, 오프라인 처리와 단말의 특성 정보를 활용할 수 없고, 브라우저의 성능에 좌우되며 대용량의 처리 등에 한계를 갖는다는 단점을 갖고 있습니다. 이 중에서도 단말의 하드웨어와 관련되는 제어를 직접 할 수 없다는 점은 가장 큰 단점으로 꼽히고 있습니다. 예를 들어, 간단한 애플리케이션을 통해 배터리의 잔량, 주소록의 주소 정보, 단말에 저장된 일정 정보 등을 활용하고자 해도 할 수 없다는 점은 치명적인 약점으로 꼽혀 왔습니다.
웹 애플리케이션을 위한 W3C의 표준들은 위의 그림과 같이 단순한 문서 표현의 수준을 넘어, 위젯과 같은 패키징 기능, 네트워크 및 커뮤니케이션 기능, 센서 및 하드웨어 제어 기능, 스토리지 및 파일 제어 기능, 사용자 인터액션 기능 등 거의 모든 기능을 웹 기반으로 처리하기 위한 표준 규격이 개발되고 있습니다.
웹 애플리케이션 플랫폼 기술 표준 동향
일반적으로 플랫폼은 협의(狹義)의 의미로는 API를 통해 애플리케이션에 필요한 서비스를 제공하는 특수한 SW 프로그램을 의미하여, 광의(廣義)의 의미로는 제품이나 서비스 개발의 기반이 되는 아키텍처로 다양한 응용과 서비스가 개발/제공되는 환경을 포괄적으로 의미합니다. 초기의 웹 기술은 단순히 문서를 공유하고 정보를 표현/공유하기 위한 구조였지만, 지속적인 기술의 발전과 확장에 따라 2000년 이후부터 웹 기술은 점점 더 다양한 서비스와 데이터를 연동하고 서비스할 수 있도록 하는 응용 플랫폼의 형태로 발전해 왔습니다. 이러한 웹 플랫폼 기술의 지속적인 확산 배경에는 다음과 같은 특징들이 있습니다.
단순성 : 웹 기술의 HTTP, URI, HTML이라는 단순한 요소들만을 활용함에 따라 기술 확장이 용이하고, 다른 응용 개발 환경보다는 손쉽게 개발자가 관련 기술을 익히고 활용하고 적용해 볼 수 있다는 장점을 갖고 있습니다.
호환성 : 웹 기술은 전 세계적으로 단일 표준화되어 있고 표준과 기술이 공개되어 있어 관련 기술을 손쉽게 적용하여 활용할 수 있다는 장점을 갖고 있습니다.
독립성 : HW 및 운영체제 의존성이 적어서 표준 브라우저와 웹 엔진이 있는 환경이라면 어떤 장치에서든 일관되게 활용될 수 있다는 장점을 갖고 있습니다.
개방성 : 웹 응용은 서비스 재활용이 손쉬우며, 개방형 API 등을 통해 기존에 개발된 내용을 손쉽게 융합하여 활용할 수 있다는 장점을 갖고 있습니다.
이식성 : 웹 기술은 소형의 단말 환경에서도 손쉽게 적용할 수 있다는 특징을 갖고 있으며, 이를 통해 다양한 서비스와 데이터들을 손쉽게 연결할 수 있다는 장점을 갖고 있습니다.
웹 플랫폼은 웹 서비스와 웹 브라우저를 중심으로 하는 웹 응용 서비스 환경을 말하며, 다양한 웹 응용과 웹 서비스가 개발/제공되는 환경을 의미합니다. 최근의 HTML5 동향에서 볼 수 있듯이, 웹 기술은 점점 더 단말/플랫폼/스크린의 경계가 없도록 하며, 모든 정보와 서비스 및 사물을 묶는 인프라와 플랫폼이자 새로운 앱과 SW 환경으로서의 형태로 진화하고 있습니다.
이러한 웹 플랫폼 기술들은 다음과 같이 크게 세 가지 분야로 나눌 수 있습니다.
Device API
웹 애플리케이션이 갖는 가장 큰 단점 중 하나는 네이티브 애플리케이션과 달리 단말의 하드웨어와 관련되는 제어를 할 수 없다는 점이라 할 수 있습니다. 특히 이러한 웹 애플리케이션의 약점은 모바일 환경에서 더욱 치명적이라 할 수 있습니다. 데스크톱의 웹 애플리케이션과 달리 모바일 단말의 경우 플랫폼으로부터의 제약을 많이 갖고 있지만, 반면에 보다 다양하게 디바이스 기능들을 활용할 필요를 갖고 있어 단말 기능 접근에 대한 요구가 훨씬 크다고 할 수 있습니다.
이에 W3C에서는 2008년 12월 Device API와 관련되는 다양한 표준화 이슈들을 발굴하기 위해 관련 워크숍을 개최하였고, 워크숍 논의 결과를 기초로 WG 설립 작업을 진행하여 2009년 6월 DAP(Device API and Policy) WG를 발족하게 되었으며, Contacts API, Messaging API, Calendar API 등 16개의 API들을 도출하였고 이에 대한 표준 문서 개발을 진행하고 있습니다.
DAP WG는 Device API WG로 이름을 변경하고 2013년 7월 말까지를 목표로 표준화를 끝낸 후 실제 브라우저 내의 구현을 목표로 작업을 진행하고 있습니다. Device API 표준은 모바일 웹 애플리케이션과 관련하여 가장 많은 영향을 미칠 수 있는 표준으로, 향후 표준화가 완료되고 다양한 모바일 브라우저에서 구현된다면 강력하고도 다양한 모바일 웹 애플리케이션이 등장할 것으로 예상됩니다.
Web API
W3C는 2006년 Rich Web Client Activity를 시작하며 Web Application WG와 Web API WG를 만들어 표준화 작업을 진행하다, 2008년 Web Application WG로 통합하여 표준화 작업을 진행해오고 있습니다. 현재 약 20여 개 이상의 웹 애플리케이션 관련 표준안들이 검토되고 협의 중에 있으며, 이러한 Web Application WG의 주요 Web API 표준화 작업은 다음과 같이 6가지 내용으로 요약할 수 있습니다.
XHR(XMLHttpRequest) : AJAX와 같은 비동기식 웹 애플리케이션 개발 기법의 핵심 요소로서, 서버와 클라이언트 사이의 데이터 전송을 위한 기능을 정의합니다. 현재 XHR 1.0을 확장하는 2.0 표준에 대한 초안 작업을 진행하고 있습니다.
Web IDL : 브라우저에서 구현되어 웹 상에서 인터페이스를 설명하기 위한 용도로 사용될 수 있는 IDL(인터페이스 정의 언어)을 정의합니다. Web IDL은 인터페이스의 정의와 더불어, 인터페이스와 ECMAScript, 그리고 자바 바인딩에 대한 명료한 적합성 요구사항을 제공하는 데 이용됩니다.
Web Socket : 원격 서버와의 양방향을 가능하도록 하는 웹 소캣을 이용하는 웹 페이지를 가능하도록 API를 정의합니다. 웹 소캣에 대한 규격은 IETF에서 표준화 작업을 진행 중에 있습니다.
Web Storage : 웹 클라이언트 내에 구조화된 키-값 쌍 데이터의 영구적 데이터 저장을 위한 API를 정의합니다.
Web Workers : 웹 애플리케이션 작성자가 메인 페이지 내에서 병력적으로 스크립트 백그라운드 작업을 생성하여 실행할 수 있도록 하는 API를 정의합니다. 이를 통해 장시간 실행되는 스크립트를 인터럽트 없이 수행 가능하도록 할 수 있습니다.
File API : 단말에서 내부 파일 접근을 위한 API로 현재 File List와 Blog 처리, 디렉토리와 시스템, Writer 등의 세 가지 API 규격을 각각 만들고 있습니다.
CORS(Cross-Origin Resource Sharing) : 서로 다른 도메인 간의 웹 자원을 공유하는 웹 애플리케이션을 만들 수 있도록 하기 위한 접근 제어 및 권한 제어 표준입니다.
위와 같이 다수의 웹 애플리케이션 관련 규격들이 개발되고 있는데, 특히 주로 HTML5와 관련하여 스토리지 처리, 백그라운드 처리, 소켓 처리, 비동기 데이터 처리 등과 같은 새로운 규격들이 개발 중에 있다는 사실에 비추어 앞으로 차세대 웹 애플리케이션의 기능과 형태에 많은 변화가 있을 것으로 예상됩니다.
Native Web App
최근 Native Web App이란 새로운 용어가 등장하기 시작했는데, 이는 원격에 있는 웹 자원을 불러서 강력한 웹플랫폼 사용하는 것이 아니라, 로컬에 저장된 웹 자원에 기초하여 웹 응용이 동작한다는 개념에서 Native Web App이라고 불리며, '위젯(Widget)'과 같은 형태를 비롯하여 설치형 웹 응용들을 모두 포함하는 새로운 개념입니다. 위젯에 대해서는 아직도 다양한 정의와 인식의 차이들이 있기는 하지만, "사용자 기기 또는 모바일 단말에 다운로드 하거나 설치할 수 있으며 간편히 쓸 수 있도록 만든 작은 창(window) 형태의 응용" 개념으로 정의되고 있습니다. 위젯은 그 실행 유형과 구동 플랫폼, 구동 방식에 따라 다양한 유형으로 구분됩니다. 보통 웹 위젯은 웹 기술을 사용하여 구동되는 위젯 형태를 의미하며, 모바일 위젯은 모바일 단말에서 구동되는 위젯을 부릅니다. 위젯 표준화에 대한 필요성은 2006년부터 제기되기 시작하였습니다. 위젯에 대한 관심이 높아지고 다양한 위젯 플랫폼들이 개발되면서, 위젯 플랫폼 간의 호환성을 높이고, 기 개발된 위젯 애플리케이션들을 공유하여 사용할 수 있도록 하자는 필요성이 제기되었기 때문입니다. 이에 2007년부터 W3C의 웹 애플리케이션 WG를 중심으로 표준화 작업이 시작되었고, 현재 7개 문서로 나누어 작업 중에 있습니다. 앞으로 Widget 2.0에 대한 표준화를 추가로 시작할 것으로 예상되며, 네이티브 웹앱 모델로 단순한 위젯 형태가 아닌 보다 복잡한 설치형 웹 응용 형태를 기초로 하는 모델이 될 것으로 예상됩니다.
웹 운영체제 기술 동향
웹 기술이 발전함에 따라 다양한 기능과 서비스를 웹 응용으로 만들고 제공하기 위한 기술뿐 아니라, 웹 기술에 기반한 독자적인 운영체제 환경을 만들고자 하는 여러 가지 시도들도 등장해 왔습니다. 웹 기반 SW 플랫폼은 Native SW 플랫폼이나 자바 기반 SW 플랫폼에 비해 널리 확산되지는 않았지만, 응용 프로그램 개발자 확보 용이성, 크로스 디바이스 적용 용이성, 응용 확보의 용이성, 웹의 개방성, 글로벌 협력의 용이성, 웹 접속 디바이스의 급속한 증대 등으로 확대가 예상되고 있습니다. 웹 플랫폼 기술은 웹 서버 플랫폼 기술과 웹 클라이언트 플랫폼 기술, 그리고 웹 서비스 플랫폼으로 구성됩니다.
1단계 웹 운영체제(1994 ~ 2005년)
초기의 웹 운영체제의 개념은 웹 기반의 데스크톱 환경을 만들어 제공하는 것을 주요 목표로 하였습니다. 초기 Web Desktop 또는 Webtop 환경은 브라우저 위에 웹 페이지를 통해 데스크톱 환경과 유사한 가상의 데스크톱 페이지를 만들어 제공하고, 이를 통해 사용자가 웹 서비스들을 선택하고 이용할 수 있도록 하였습니다. 이러한 개념은 1994년 SCO를 통해 최초로 소개되었고, 이후 eyeOS를 비롯하여 많은 서비스와 제품들이 등장하였습니다. 1단계 웹 데스크톱 기반의 운영체제는 1)언제 어디서든 사용 가능하며, 2)브라우저만 있으면 구동이 가능하며, 3)단말 플랫폼에 무관하다는 특징을 장점으로 갖고 있었습니다. 그러나 반면에 1)보안 취약성과 속도 문제, 2)기존 데스크톱 환경과의 차별성 부족, 3)오프라인 시 사용 불가능, 4)응용 부족, 5)차별성 부족 등의 여러 가지 단점과 한계를 나타냈습니다.
2단계 웹 운영체제(2006년 ~ 현재)
2005년 웹 2.0의 등장과 모바일 및 스마트폰의 급성장은 새로운 기회들을 만들었습니다. 이 중에서도 2009년 webOS의 등장은 웹 운영체제에 대한 개념과 생각을 바꾸는 결정적인 계기가 되었습니다. 과거에도 마이크로소프트 등은 웹 기술을 운영체제와 결합시키는 다양한 시도들을 하여 왔지만, 웹을 기반으로 하는 웹 응용 중심의 운영체제가 등장한 것은 최초였기 때문입니다.
Web OS : 리눅스 커널에서 구동되는 모바일 운영체제로 웹 2.0 기술들을 포함하면서 Mojo Framework를 기반으로 웹 언어를 기반으로 하는 모바일 응용들을 개발하고 활용할 수 있도록 하였습니다. 이러한 시도는 다양한 웹 운영체제에 대한 새로운 시도들을 촉발하는 계기가 되었고, 크롬 OS 등의 등장으로 이어졌습니다.
Web OS의 주요 특징은 모바일 단말을 대상으로 하는 플랫폼으로 웹 언어를 사용하여 프로그래밍을 한다는 혁신적인 개념과 함께 웹 응용을 핵심으로 하는 것을 특징으로 하고 있습니다. 그러나 다른 치열한 모바일 플랫폼들과의 경쟁 속에서 이러한 웹 응용을 중심으로 한다는 특징만으로 경쟁을 하기란 쉽지 않다는 점을 보여주었습니다.
Chrome OS : 구글 크롬 OS는 2009년 오픈소스 프로젝트인 Chromium OS 프로젝트를 기반으로 만들어져 2010년 12월에 발표된 리눅스 기반의 운영체제입니다. 크롬 OS는 자바 기반의 플랫폼인 구글 안드로이드와는 별개로 개발되고 있으며, 북 사양과 유사한 크롬북 단말을 대상으로 하고 있습니다. 크롬 OS는 리눅스를 기본 운영체제로 사용하고 있으며 크롬 브라우저를 최적화시켜 기본 인터페이스로 채택하고 있다는 점과, 그림에서처럼 WebOS와는 달리 브라우저를 기반으로 하는 thin client 구조를 지향하고 있으며, 구글 클라우드와의 연동을 핵심으로 하고 있다는 점을 특징으로 하고 있습니다.
구글 클라우드를 기반으로 한 구글 크롬 OS의 주요한 장점들로는 1)모든 주요 자료의 클라우드 저장, 2)저사양 단말에서도 구동 가능, 3)빠른 부팅 속도, 4)구글 클라우드를 기반으로 한 일관된 사용자 환경 제공 가능, 5)지속적으로 자동 업데이트되는 운영체제를 꼽고 있습니다. 반면 항상 네트워크 기반의 접속을 해야 하므로 1)오프라인 사용이 불가능하며, 2)특정한 단말(넷북)에서만 구동 가능하다는 단점을 갖고 있습니다
Webinos : 2010sus 9월부터 2013년까지 EU FP7 산하의 프로젝트로 진행되고 있으며, 다양한 커넥티드(스마트폰, 모바일 기기, TV, 자동차 등) 단말 위에서 안전하고 견고한 웹 애플리케이션과 서비스를 이용하고 공유하는 것이 가능할 수 있도록 하는 오픈소스 플랫폼을 개발하는 것을 목표로 하고 있습니다. 현재 Telecom Italia, DoCoMo 등 4개 통신사, 삼성전자와 소니에릭슨, BMW 등 3개 제조사를 비롯하여 15개의 연구기관 및 대학교 등이 참여하고 있으며, 게임, 소셜 서비스 등을 구현하는데 필요한 기기 지원, 자원 공유, 통신 기능, 보안 모델 등에 초점을 맞춘 연구 개발을 진행하고 있습니다.
타이젠(Tizen) : 2011년 삼성과 인텔의 주도로 만들어진 Tizen Association을 통해 개발되고 있는 운영체제로, HTML5 기반의 웹 응용 프레임워크를 핵심 요소로 태블릿, 노트북, 스마트폰, 스마트TV 및 차량용 시스템 등에서 활용할 수 있는 플랫폼 개발을 목표로 하고 있습니다. 이미 이번 MWC 2013에서 타이젠 2.0이 탑재된 개발용 단말기를 공개하기도 했습니다.
B2G Project : 오픈소스 커뮤니티인 모질라(Mozilla)에서 추진하고 있는 오픈소스 기반의 웹 운영체제 개발 프로젝트로, HTML5 애플리케이션을 기반으로 모바일 단말의 다양한 HW 기능을 제어할 수 있도록 하고, 웹 기반의 애플리케이션 운영 환경을 제공하고자 하는 것을 목표로 하고 있습니다. UI 모듈인 Gaia, 애플리케이션 런타임인 Gecko 엔진, 하위 레벨 운영체제 시스템인 Gonk로 구성되어 있습니다.
웹 기술은 편의성, 응용성, 호환성, 보편성, 확장성을 확보하기 위해 끊임없이 진화를 해오고 있습니다. 과거 웹 기술이 단지 브라우저와 서버 기술에만 초점을 맞추었다면, 최근에는 HTML5를 중심으로 리치 웹 애플리케이션 기술, 매시업 기술,단말 제어를 위한 시스템 API 기술, 서비스 플랫폼 기술, 웹 운영체제 기술들과 같은 플랫폼을 지향하는 다양한 기술 개발 및 제품 개발이 진행되고 있습니다.
웹 플랫폼으로의 진화가 갖는 중요한 의미는 미래 플랫폼 경쟁력에 있다고 할 수 있습니다. 즉, 최근 급변하는 모바일 환경에서 볼 수 있듯이, 플랫폼 주도권과 경쟁력은 기업의 흥망성쇄와 미래를 좌우하는 중요 요소가 되었습니다. 구글과 애플에 의해 주도되고 있는 생태계, 노키아의 급속한 몰락, 전체 휴대폰 매출의 4%를 차지하는 애플이 전체 휴대폰 산업 수익의 50%를 차지하는 사건 등은 플랫폼이 곧 핵심 경쟁력이란 점을 증명한다고 할 수 있습니다. 그리고 기존 사업자가 단말기, 서비스, 콘텐츠 공급 등을 주도하며 산업 전반에 영향력을 행사하던 시대에서, 플랫폼 사업자에 의해 생태계가 결정되고 주도되는 플랫폼 중심의 시대로 변화되었다는 것을 의미하기도 합니다. 이제 앞으로의 웹은 더욱더 많은 플랫폼으로서의 역할을 하게 될 것이며, 더욱더 많은 곳에서 사용자들과 만나게 될 것으로 전망됩니다. 그리고 그 선두에는 HTML5가 있습니다.
새 웹사이트에 HubSpot CMS를 선택하면 얻을 수 있는 이점
최고의 마케팅 자동화 소프트웨어이자 강력한 콘텐츠 관리 시스템 (CMS) 으로 허브스팟을 고려중이신가요 ? 웹사이트를 재구축하려는 고객이라면 CMS 플랫폼으로 허브스팟을 고려하실텐데요 , 허브스팟 CMS 가 사이트 구축에 적합한지 여부를 우선 결정해보는 것은 중요합니다 . 설사 이미 또 다른 CMS 플랫폼을 사용하고 계시더라도 , 허브스팟의 마케팅 소프트웨어는 강력한 웹플랫폼 강력한 웹플랫폼 그들 대부분과 연동이 가능합니다 . 이것은 즉 , 허브스팟을 통해 CMS를 사용하신다면 단일 저장소에서 디지털 마케팅을 통합적으로 관리할 수 있다는 것입니다 .
마케팅 관점에서 HubSpot CMS Hub 는 콘텐츠 관리에 대해 쉽게 습득할 수 있는 플랫폼입니다 . HubSpot CMS Hub 에서 사이트 페이지를 작성 , 게시 또는 업데이트하는 데 기술적인 소질이나 배경은 필요하지 않습니다 . 테마와 드래그 앤 드롭 편집기를 사용하면 독립형 CMS 로 랜딩 및 웹 사이트 페이지와 블로그 게시물을 쉽게 만들 수 있습니다 . 또한 , 모바일 , 태블릿 및 데스크톱 사용에 최적화되어 있으므로 컨텐츠를 여러 기기로 확장하기 위해 개발자를 참여시킬 필요가 없습니다 .
HubSpot CMS 는 CMS 플랫폼을 CRM( 고객 관계 관리 시스템 ) 과 원활하게 연결하는 일체형 플랫폼으로 , 방문자 맞춤형 스마트 콘텐츠 기능을 설정할 수 있습니다 . 이러한 기능을 통해 마케팅 담당자는 콘텐츠 전략 , 제안 및 홍보가 특정 고객의 심리학적 및 인구통계학적 요소를 목표로 하고 있는지 확인할 수 있습니다 . CMS Hub 에는 웹 사이트에서 라이브 채팅 기능 또는 챗봇을 활성화할 수 있는 대화식 마케팅 도구도 제공됩니다 .
또한 중앙 집중식 인바운드 마케팅 , 세일즈 및 서비스 도구를 하나의 플랫폼에 저장할 수 있습니다 . 올인원 (All-in-one) 툴은 귀사의 영업 및 마케팅 팀뿐만 아니라 서비스 팀 간의 원활한 조정을 보장하여 완벽한 고객 환경을 제공합니다 . CMS Hub 는 또한 강력한 웹플랫폼 강력한 웹플랫폼 방문자와 검색 엔진이 귀하의 콘텐츠를 좋아하는지 확인할 수 있도록 영업 활용 방안 도구 , 콘텐츠 전략 , SEO 도구 및 응답형 미리 보기를 제공합니다 .
마케팅 부서뿐만 아니라 아마 개발 부서에서도 CMS Hub 는 매우 유용한 툴로 여길 것이라 생각됩니다 . 점점 더 많은 기업이 SaaS 기반 솔루션에 의존함에 따라 견고한 통합 기능에 대한 필요성이 그 어느 때보다 높아졌습니다 . AdRoll 에서 Zendesk 에 이르기까지 App Marketplace 에서 선택할 수 있는 HubSpot CMS 통합 파트너가 많이 있습니다 . 아직 통합 기능이 없는 경우 개발자는 HubSpot API 에 액세스하여 애플리케이션과의 맞춤형 통합을 빠르고 쉽게 생성할 수 있습니다 . 개발자는 HubSpot API 를 사용하여 CRM 과 외부 어플리케이션 간의 원활한 데이터 관계를 제공할 수 있습니다 . 잘 문서화된 플랫폼은 소셜 미디어 채널 , 웹 세미나 도구 또는 다른 플랫폼과의 통합을 쉽게 만듭니다 . 또한 엔드포인트 모니터링 및 내장 OAUth 서비스와 같은 다양한 API 도구를 호스팅합니다 .
- 로컬 웹 사이트 개발: GitHub 와 같은 도구를 활용하여 버전 제어를 처리하고 준비가 되면 웹 자산을 변경할 수 있습니다 .
- 서버리스 기능: 외부 서버 , SSL 인증서 또는 데이터 전송 프로세스를 구성하지 않고 이벤트 등록 , 방명록 , 계산기와 같은 대화형 요소를 추가합니다 .
- 웹 사이트 테마: 마케팅 팀이 프론트엔드를 관리하고 업데이트할 수 있도록 지원하는 사이트 전체의 컨텐츠 편집 환경을 구축합니다 . 처음부터 시작하거나 미리 작성된 테마를 출발점으로 활용할 수 있습니다 . 테마는 핵심 및 사용자 정의 템플릿 , 글로벌 요소 , 사용자 정의 모듈 , 스타일시트 및 JavaScript 파일과 함께 제공되며 , 모두 고유한 웹사이트에 맞게 사용자 정의할 수 있습니다 . CMS 는 기본 테마와 함께 제공되며 에셋 마켓플레이스를 통해 구입할 수 있는 다양한 기타 테마 옵션을 제공합니다 .
- HubDB를 사용한 동적 컨텐츠: 여러 페이지에 표시되는 컨텐츠에 대해 글로벌 사이트 업데이트를 적용하도록 업데이트할 수 있는 데이터 테이블을 구축합니다 . 캘린더 , 제품 카탈로그 , 가격 데이터 등에 적합합니다 .
- 코드 알림: 구문 오류 , HubL, 태그 누락 등을 통해 페이지 오류 , 사이트 속도 저하를 유발할 수 있는 인프라 또는 설계 버그를 쉽게 식별합니다 .
허브스팟은 러닝 코스가 다양한 종합 플랫폼입니다 . HubSpot Academy 의 튜토리얼과 온라인 교육을 통해 모든 방법론과 도구에 대한 심층적인 이론적 이해를 얻어보세요 !
Swift
Swift는 iOS, iPadOS, macOS, tvOS 및 watchOS를 위한 강력하고 직관적인 프로그래밍 언어입니다. Swift 코드 작성은 대화식으로 재미있고, 구문은 간결하면서도 표현력이 풍부하며, Swift에는 개발자들이 좋아하는 첨단 기능이 포함되어 있습니다. Swift 코드는 안전하게 설계되었으며 빛의 속도로 빠르게 실행되는 소프트웨어를 제작할 수 있습니다.
최신 기능
Swift는 프로그래밍 언어에 대한 최신 연구 결과이며 수십 년에 걸친 Apple 플랫폼 구축 경험이 결합되어 있습니다. 명명된 매개변수는 Swift로 작성된 API를 더 쉽게 읽고 유지 관리할 수 있게 해주는 명확한 구문으로 표현됩니다. 세미콜론도 입력할 필요가 없습니다. 추론된 타입은 코드를 더 명확하게 만들고 실수를 덜 하도록 도와주며, 모듈은 헤더를 없애고 이름 공간을 제공합니다. 문자열은 다국어 및 이모티콘 지원을 위해 유니코드 표준을 따르며 다양한 사례에 사용할 수 있도록 성능을 최적화하기 위해 UTF-8 기반의 인코딩을 사용합니다. 엄격하고 확정적인 참조 계수를 사용하고, 가비지 컬렉션 관련 오버헤드 없이 최소한의 메모리 사용량을 유지하여 메모리를 자동으로 관리합니다. 비동기식 동작을 정의하는 간단한 내장 키워드를 사용하여 동시성 코드를 작성할 수 있어 코드의 가독성이 높아지고 오류 가능성이 낮아집니다.
복잡하지 않은 최신 구문으로 새로운 타입을 선언합니다. 인스턴스 속성을 위한 기본 값을 제공하고 맞춤형 이니셜라이저를 정의합니다.
Extension을 사용하여 기존 타입에 기능성을 더하고, 맞춤형 문자열을 써 넣음으로서 상용구를 줄입니다.
자동화된 JSON 인코딩 및 디코딩과 같은 강력한 언어 기능을 활용하도록 맞춤형 타입을 빠르게 확장합니다.
간결한 클로저로 강력한 맞춤형 변환을 수행합니다.
이러한 미래 지향적인 개념은 재미있고 사용하기 쉬운 언어를 만들어 냅니다.
Swift는 다음과 같이 코드의 표현력을 높이기 위한 다른 많은 기능을 제공합니다.
- 강력하고 사용이 간편한 제네릭
- 프로토콜 확장 프로그램으로 보다 쉬워진 제네릭 코드 작성
- 1급 함수 및 가벼운 클로저 구문
- 범위 또는 컬렉션에서의 빠르고 간결한 반복
- 튜플 및 멀티플 반환 값
- 메소드, 확장 프로그램 및 프로토콜을 지원하는 구조
- 페이로드를 포함할 수 있으며 패턴 일치를 지원하는 enum
- 함수형 프로그래밍 패턴(예:지도 및 필터)
- try / catch / throw 를 사용한 내장된 오류 처리
안전 중심 설계
Swift는 불안전한 코드의 전체 클래스를 제거합니다. 변수는 사용 전에 항상 초기화되고, 배열 및 정수에 대한 오버플로우 검사가 수행되며, 메모리는 자동으로 관리됩니다. 또한 메모리에 대한 독점적인 접근을 통해 많은 프로그래밍 실수가 발생하지 않도록 보호합니다. 개발자의 의도를 쉽게 정의할 수 있도록 구문이 조정됩니다. 예를 들어 세자로 된 간단한 키워드를 사용하여 변수( var ) 또는 상수( let )를 정의합니다. 뿐만 아니라 Swift는 특히 배열 및 딕셔너리와 같이 일반적으로 사용되는 값 타입을 최대한 활용합니다. 이는 해당 타입으로 사본을 만들 경우 다른 곳에서 수정할 수 없다는 것을 의미합니다.
또 다른 안전 기능은 기본적으로 Swift 객체가 결코 nil 이 될 수 없게 하는 것입니다. 실제로 Swift 컴파일러는 컴파일 시 오류가 있는 nil 객체를 만들거나 사용할 수 없도록 합니다. 이렇게 하면 코드를 훨씬 깔끔하고 안전하게 작성할 수 있으며 앱에서 거대한 카테고리의 런타임 충돌을 방지할 수 있습니다. 하지만 nil 이 유효하고 적절한 경우도 있습니다. 이러한 경우를 위해 Swift는 선택 사항이라는 혁신적인 기능을 제공합니다. 선택 사항에는 nil 이 포함될 수 있지만 Swift 구문은 ? 구문을 사용하여 nil을 안전하게 처리하도록 함으로써 컴파일러에 동작을 이해하고 안전하게 처리될 것임을 표시합니다.
함수에서 반환할 인스턴스가 있거나 없을 때 선택 사항을 이용할 수 있습니다.
바인딩 선택 사항, 체이닝 선택 사항 등의 기능과 nil 통합을 사용하면 선택 사항 값으로 안전하고 효율적으로 작업할 수 있습니다.
빠르고 강력한 성능
Swift는 최초 개념 설정 시점부터 빠르게 동작하도록 만들어졌습니다. Swift 코드는 뛰어난 고성능 LLVM 컴파일러 기술을 사용하여 최신 하드웨어를 최대한 활용할 수 있도록 최적화된 기계어 코드로 변환됩니다. 또한 구문 및 표준 라이브러리는 손목에 착용한 시계에서든 서버 클러스터 전반에서든, 코드를 작성하는 가장 확실한 방법으로, 최고의 성능을 발휘하도록 조정되었습니다.
Swift는 C 및 Objective-C 언어의 후속 언어로 타입, 흐름 제어, 연산자와 같은 하위 수준 프리미티브를 포함합니다. 또한 클래스, 프로토콜, 제네릭과 같은 객체 지향 기능을 제공하므로 Cocoa 및 Cocoa Touch 개발자에게 필요한 성능과 파워를 제공합니다.
탁월한 제1언어
Swift는 코딩의 세계로 들어가기 위한 관문입니다. 실제로 Swift는 아직 공부 중인 학생이나 새로운 진로를 탐색하는 사람, 누구나 사용할 수 있는 최초의 프로그래밍 언어로 개발되었습니다. Apple은 교육자들을 위해 강의실 안팎에서 Swift를 가르치기 위한 무료 커리큘럼을 개설했습니다. 코딩 입문자들은 Swift 코드를 사용하여 대화식으로 즐겁게 시작할 수 있는 iPad용 앱인 Swift Playgrounds를 다운로드할 수 있습니다.
앱 개발자 지망생들은 무료 과정을 통해 Xcode로 첫 번째 앱을 빌드하는 방법을 학습할 수 있습니다. 뿐만 아니라 전 세계의 Apple Store에서는 Swift 코드를 실질적으로 경험해 볼 수 있는 Today at Apple 코딩 및 앱 세션을 주최합니다.
오픈 소스
Swift는 Swift.org에서 오픈 소스로 개발되었으며 모든 사람이 이용할 수 있는 소스 코드, 버그 추적기, 포럼 및 정기적인 개발 빌드가 포함되어 있습니다. Apple뿐만 아니라 수백 명의 외부 개발자가 참여하는 이 광범위한 개발자 커뮤니티에서 Swift를 더욱 멋진 언어로 만들기 위해 협력하고 있습니다. 이 커뮤니티에 속한 개발자들이 Swift의 놀라운 잠재력을 실현한 경험을 공유하는 더 광범위한 블로그, 팟캐스트, 컨퍼런스 및 모임도 있습니다.
크로스 플랫폼
Swift는 Linux를 비롯한 모든 Apple 플랫폼을 지원하며, 더 많은 플랫폼을 지원하기 위해 커뮤니티 회원들이 활발하게 활동하고 있습니다. 커뮤니티에서는 강력한 웹플랫폼 SourceKit-LSP를 사용하여 Swift 지원을 다양한 개발자 도구로 통합하는 작업도 수행합니다. Apple은 Swift로 소프트웨어를 더 빠르고 안전하게 만드는 동시에 프로그래밍을 더 재미있게 만드는 다양한 방법을 모색할 수 있어 기쁘게 생각합니다.
서버를 위한 Swift
Swift는 Apple 플랫폼에서 수많은 신규 앱을 강력하게 지원하는 동시에 새로운 클래스의 최신 서버 응용 프로그램에도 사용됩니다. Swift는 런타임 안정성, 컴파일된 성능 및 소규모 메모리 공간이 필요한 서버 앱에 사용하기에 적합합니다. 커뮤니티에서는 Swift를 서버 응용 프로그램 개발 및 배포용으로 활용할 수 있도록 Swift 서버 작업 그룹을 구성했습니다. 이러한 노력의 첫 번째 성과로 고성능 프로토콜 서버 및 클라이언트를 위한 크로스 플랫폼 비동기식 이벤트 중심 네트워크 응용 프로그램 프레임워크인 SwiftNIO가 탄생했습니다. SwiftNIO는 로깅, 메트릭 및 데이터베이스 드라이버를 비롯한 추가 서버 지향 도구 및 기술 구축을 위한 기반으로, 현재 모두 활발하게 개발이 진행 중입니다.
오픈 소스 Swift 커뮤니티 및 Swift 서버 작업 그룹에 대해 자세히 알아보려면 다음의 페이지를 방문하시기 바랍니다: Swift.org
Playgrounds 및 REPL (Read-Eval-Print-Loop)
iPad용 Swift Playgrounds와 마찬가지로 Xcode의 Playground를 사용하여 매우 간단하고 재미있게 Swift 코드를 작성할 수 있으며, 한 줄의 코드를 입력하면 결과가 즉시 나타납니다. 작성 후에는 코드 옆에서 Quick Look 기능으로 결과를 확인하거나 해당 결과를 바로 아래에 고정할 수 있습니다. 결과 보기에 그래픽, 결과 목록 또는 시간 경과에 따른 값의 그래프를 표시할 수 있습니다. Timeline Assistant를 열면 복잡한 뷰가 변하고 움직이는 것을 볼 수 있어 새로운 UI 코드를 실험하는 데 유용하며, 코드를 작성하면서 움직이는 SpriteKit 장면을 재생할 수 있습니다. 플레이그라운드에서 코드를 완벽하게 만들었다면 코드를 프로젝트로 이동하기만 하면 됩니다. Swift는 터미널 또는 Xcode의 LLDB 디버깅 콘솔에서도 상호 작용이 가능합니다. Swift 구문을 사용하여 실행 중인 앱을 평가하고 이러한 앱과 상호 작용하거나, 새로운 코드를 작성하여 스크립트와 유사한 환경에서 어떻게 작동하는지 확인할 수 있습니다.
Package Manager
Swift Package Manager는 Swift 라이브러리 및 실행 파일을 구축, 실행, 테스트 및 패키징하기 위한 단일 크로스 플랫폼 도구입니다. Swift 패키지는 Swift 커뮤니티에 라이브러리 및 소스 코드를 배포하는 가장 좋은 방법입니다. 패키지 구성은 Swift로 직접 작성되어 손쉽게 대상을 구성하고, 제품을 결정하며, 패키지 종속성을 관리할 수 있습니다. 또한 Swift 패키지에는 프로젝트 빌드 및 추가 도구 제공에 도움이 되는 맞춤형 명령어를 포함할 수 있습니다. Swift Package Manager는 실제로 Swift로 빌드되며 Swift 오픈 소스 프로젝트에 패키지 형태로 포함됩니다.
Objective-C 상호 운용성
지금 바로 Swift를 사용하여 전혀 새로운 응용 프로그램을 만들거나 Swift 코드 사용을 시작하여 앱에 새로운 기능을 구현할 수 있습니다. 동일한 프로젝트에서 기존 Objective-C 파일과 함께 Swift 코드가 공존하며, Objective-C API에 대한 완전한 접근 권한이 제공되므로 적용이 용이합니다.
‘미래의 일상을 바꾼다’ SDC21 담당자들이 말하는 차세대 기술
삼성전자는 SDC(Samsung Developer Conference)21에서 전 세계 개발자들과 함께 혁신적 고객 경험을 가능하게 하는 차세대 기술들을 논의한다. 사용자들의 삶을 한층 풍성하고 편리하게 만들 혁신 기술은 무엇이고, 어떤 방식으로 삶을 바꿔 갈까? 뉴스룸이 SDC21에서 각자 세션을 맡아 발표한 담당자들을 만나 이야기를 들어보았다.
터치보다 더욱 간편한 음성인식, ‘빅스비 보이스 어시스턴트 플랫폼’의 진화
인공지능(AI)은 일상 속 필수 기기인 스마트폰, 태블릿 등 다양한 기기의 성능을 한층 업그레이드한다. 특히 음성 인식은 기기와의 상호작용을 한층 원활하게 해준다. 목소리만으로 한층 편리한 경험을 가능하게 만들 ‘빅스비 보이스 어시스턴트 플랫폼’에 대해 AI 클라이언트 개발 그룹의 김주환 프로가 설명했다.
Q: 새롭게 업데이트된 빅스비 보이스 어시스턴트 플랫폼(Bixby voice assistant Platform)은 어떤 모습인가?
빅스비는 적은 데이터만으로 삼성의 여러 기기를 제어하는 최고의 음성 인터페이스를 지향하고 있다. 이런 관점에서 이번엔 갤럭시만의 사용자 경험을 제공하는 데 중점을 뒀다. 예를 들어 갤럭시 Z 플립3 의 커버스크린을 쉽게 사용하는 기능이나 갤럭시 워치4 시리즈의 핸즈프리 기능이 그 예다.
빅스비는 AI 플랫폼으로서도 다방면으로 고도화됐는데, 엔진 측면에선 온디바이스로 자동음성인식(Automatic Speech Recognition, ASR)을 지원한다. 기기 안에서 바로 사용자 목소리를 처리하기 때문에 속도도 빠르고 개인 정보 보호도 가능하다. 이 밖에 ‘빅스비 홈 플랫폼’도 개발해 지원 기기를 늘리고 있다. 과거에 음성 명령을 여러 번 내렸던 걸 이젠 명령어 한 번으로 기기가 알아듣고 수행하는 것이 가능하다.
Q: 빅스비 플랫폼을 기반으로 전 세계 개발자들과 협업할 수 있는 영역은 무엇이 있을까?
빅스비에 서드파티 개발자가 참여할 방법은 여러 가지다. 스마트폰과 워치나 패밀리허브에서 삼성의 AI 엔진을 활용해 다양한 음성 서비스를 개발할 수 있다. ‘캡슐’이라고 불리는 이 서비스는 ‘빅스비 개발자 센터’에서 제공한다. 또한 디버깅과 자연어 학습을 더 쉽게 하는 기능과 다양한 UI 구성품을 편리하게 사용할 수 있게 개발자 도구를 업데이트했다. 전부 이번 SDC21에서 만나볼 수 있다.
이번에 새롭게 발표하는 내용은 기기를 추가하는 데 다양한 맥락을 활용할 수 있도록 하는 것이다. 자연어를 이해하고 명령을 내리는 빅스비 보이스와 기기 간의 연결과 동작을 제공하는 스마트싱스 IoT 레이어 사이에 ‘빅스비 홈 플랫폼’을 두어 더욱 똑똑한 기기 제어가 가능해졌다. 사용자가 하나하나 말로 명령해야 했던 것을, 이제는 빅스비 홈 플랫폼에서 효율적으로 판단을 내릴 수 있게 된 것이다. SDC21에서 이 도구를 소개하고, 앞으로 서드파티 개발자에게도 공개할 수 있도록 준비 중이다.
원하는 콘텐츠를 마음껏 즐길 수 있게, 삼성 스마트 TV의 ‘타이젠’
화질과 디자인만이 평가 기준이던 TV는 이제 어떤 콘텐츠를 제공하는지가 중요해졌다. 삼성 스마트 TV는 ‘타이젠’을 기반으로 사용자가 취향에 맞는 다양한 콘텐츠를 즐길 수 있도록 돕는다. 넓은 호환성과 안정성으로 파트너들에게 최적의 개발 환경을 제공해 온 타이젠이 이번에는 어떻게 변신했는지, VD 소프트웨어 그룹 최주현 프로가 소개했다.
Q: 삼성 스마트 TV용 타이젠 웹 플랫폼의 새로운 기능은 무엇이 있나?
웹어셈블리(WebAsssembly)라는 강력한 웹 표준기술을 통해, 삼성 스마트 TV 앱에서 고성능의 웹 앱을 개발할 수 있다. 또한 이번 SDC에서는 기존에 출시된 TV의 최신 웹 기능 탑재를 위한 업그레이드 플랜을 준비했다.
Q: 다양한 분야의 파트너들과 협력하며 타이젠 기반의 디스플레이 제품 경쟁력을 강화해 나가고 있다. 앞으로의 협업 계획은 어떻게 되나?
현재 웹 기반 클라우드 게임을 개발하고 있다. 최신 콘솔 또는 고가의 그래픽카드 없이, 타이젠 플랫폼이 탑재된 삼성 스마트 TV만 있다면 게임 패드로 최신 게임을 원활히 하는 것이 목표다. 이 과정에서 현재 서비스 중인 파트너들과 긴밀히 협력하고 있다. 누구에게나 열려 있는 오픈소스 기반 OS인 타이젠은 넓은 호환성, 다양한 개발 도구 등을 통해 개발자에게 최적의 개발 환경을 제공하도록 노력하고 있다.
혁신적인 소비자 경험을 위한 필수조건, 온디바이스 딥러닝 프레임워크 ‘NNTrainer’
최근 온디바이스 AI 기술이 주목받고 있다. 기존에는 AI 기반 앱을 실행하려면 복잡한 연산 수행이 가능한 고성능 클라우드 서버가 필요했지만, AI 앱에 사용되는 신경망이 기기 안에서 실행될 경우 사용자 입장에선 장점이 많기 때문. 삼성리서치 강력한 웹플랫폼 이지훈 프로가 온디바이스 AI의 역할과 개발자와의 협력에 대해 설명했다.
Q: 온디바이스 AI는 강력하고 혁신적인 소비자 경험을 위한 필수조건으로 꼽힌다. 이를 활용하면 사용자는 어떤 이점을 얻을 수 있나?
무엇보다 개인정보 보호에 가장 큰 강점이 있다. 개발자 입장에서도 개인정보 규제에 비교적 자유로워지고, 사용자에 조금 더 가까운 서비스를 제공할 수 있게 된다. 예를 들어 카메라 앱에서 얼굴 인식을 하는데, AI를 기기 위에서 가동하면 데이터가 외부 서버와 소통하지 않아도 되기 때문에 민감한 개인정보의 유출이 없다.
또한 인터넷 연결이나 데이터 소모 없이 AI 모델을 사용할 수 있는 점도 장점이다. 가령 특정 모델의 경우, 끊임없이 저전력으로 대기해야 한다면 인터넷 연결이나 데이터 소모가 큰 제약이 될 수 있다. 하지만, 온디바이스 AI를 활용하면 서버 응답을 기다리지 않고 바로 AI 모델을 사용할 수 있다.
마지막으로 맞춤형 AI를 기기 내에서 바로 만들 수 있다. 이전에는 기기 위에서 딥러닝 모델 훈련을 도와주는 프레임워크가 없어, 맞춤 AI를 직접 만든다는 개념이 생소했다. 이번에 소개하는 NNTrainer를 통해 카메라 앱에서 나의 얼굴이나 억양을 더 잘 인식한다거나, 나의 강아지를 찾아서 자동으로 앨범을 만들어주는 등의 서비스를 만들 수 있을 것으로 기대한다.
Q: SDC에 모인 개발자들과의 협력을 통해 향후 이 분야에 어떤 시너지를 기대할 수 있을까?
궁극적으로 온디바이스 훈련과 개인화를 통해 사용자가 AI에 더 가깝게 접근할 수 있길 기대하고 있다. SDC21을 통해 앱이나 서비스들이 NNTrainer를 인지하고 활용해 사용자에게 더 가까운 AI를 제공할 수 있다면 좋겠다. 이런 과정에서 NNTrainer 역시 더 성숙한 프레임워크로 거듭날 수 있을 것이다. 오픈소스로 개발 중이니 찾아보거나 직접 기여해도 좋다. 아직 걸음마 단계인 NNTrainer에 많은 응원 부탁드린다.
‘일상을 더욱 편리하게’ 갤럭시 워치 앱 개발
갤럭시 워치4의 강력한 성능을 책임지는 Wear OS 앱 개발에 도움이 될 새로운 도구에 대해 무선사업부 전략 파트너개발그룹의 서원희 프로가 답했다.
Q: Wear OS 덕분에 웨어러블 앱의 생태계가 더욱 풍성해졌는데, 사용자들은 어떤 편의를 누릴 수 있나?
갤럭시 워치4를 통해, 소비자들은 새로운 Wear OS에 최적화된 인기 앱과 서비스를 더 편리하게 사용할 수 있게 됐다. ‘구글 맵’, ‘유튜브 뮤직’ 등의 앱 이외에도, 사용자는 구글 플레이스토어에서 다양한 앱을 자유롭게 다운로드받아 경험해 볼 수 있다. 특히, ‘수면 주기(Sleep Cycle)’ 앱을 비롯, 최근 관심이 높아진 건강 관련 앱도 여럿 출시돼 유용하게 이용할 수 있다.
또한 워치 페이스 디자인에 좀 더 쉽게 접근할 수 있는 새로운 개발 도구 ‘워치 페이스 스튜디오(Watch Face Studio)’도 제공한다. 덕분에 디자이너와 개발자들은 사용자 기호에 맞는 다양한 워치 페이스를 개발할 수 있다.
Q: 이번 세션을 통해 개발자들과 ‘새로운 워치 앱 개발’에 대한 논의를 이어가고 있다. 어떤 부분에 중점을 두었나?
이번 SDC21에서 워치 관련 세션은 하이라이트 세션과 3개의 테크톡 세션, 총 4개를 준비했다. 개발자들이 다양한 워치 앱과 서비스를 쉽게 개발할 수 있도록 개발에 필요한 가이드를 비롯해 필요한 정보를 다 담았다. 또한 워치 페이스 시장의 활성화를 위해 디자이너와 개발자가 손쉽게 화면을 만들고 디자인할 수 있는 ‘워치 페이스 스튜디오’ 도구에 대해 상세하게 소개하는 시간도 준비했다.
0 개 댓글