제공 :
한빛 네트워크저자 : Simon St. Laurent
역자 : 한순보
원문 :
Web by default
네이티브 앱과 사물 인터넷(Internet of Things, IoT)의 등장으로 웹이 뒤쳐진다 생각할 수도 있다.
그렇지 않다. 웹은 여전히 개발자가 사람과 컴퓨터를 연결하는 가장 쉬운 방법이다. "웹에 있다"고 생각하든 안 하든 웹 도구는 거대한 통신 청크(chunk, 역자주: 덩어리, 상당한 양)와 수많은 인터페이스에 힘을 보탠다. HTML, CSS, JavaScript는 설치형 앱에서도 흔하며, 네이티브 앱과 백엔드 시스템조차 통신에 JSON, HTTP, 웹 서비스를 사용한다. IoT 장치가 항상 이러한 프로토콜을 직접 사용하지는 않는다. 하지만 많은 것들이 어딘가 숨어 있는 웹 인터페이스를 가진다.
특히 연결보다 제약이 더 문제가 되는 많은 환경에서 다른 언어와 접근 방법이 절대적 지위를 가진다. 하지만 웹 코어는 휴대전화, 앱, 가게나 박물관에서 볼 수 있는 키오스크(kiosk) 등 모든 곳에 있다. 웹은 회사 네트워크에서 데이터베이스와 메시지 시스템이 통신하는 것을 보이지 않게 숨어서 돕는다.
하지만 웹에 관련해 가능한 것의 거대한 모음은 기술 집합 그 이상이다. 도구와 기술은 훌륭하지만, 이를 적용하면 때로는 행복을, 때로는 논쟁 여지가 있는 이야기가 풍부한 집합을 만들어낸다.
앞으로 몇 달에 걸쳐 아홉 가지 주요 주제에 대한 핵심 내용을 살펴볼 것이지만 간단한 다음의 설명으로 시작해본다. 이런 짧은 이야기들이 컴퓨터와 더 넓은 세상을 변화시키는 웹의 잠재력과 그런 즐거움에 동참하기 위해 배워야 할 필요성을 더 깊이 설명하기 위한 장을 마련한다.
이러한 부분을 이 사이트에서 더 자세히 살펴보겠지만,
주간 웹 플랫폼 뉴스레터의 최신 분석과 보도 기사를 통해서도 확인할 수 있다.
"웹의 규모(scale)"는 모든 크기이다사람들이 성능과 모니터링을 사도록 하는 사람이 "웹의 규모"에 대해 이야기할 때 보통은 엄청난 범위(spectrum)의 끝을 의미한다. 백만 명과 한꺼번에 이야기해야 한다면 어떻게 해야 할까? 웹 도구와 접근 방법 방법은 더 큰 규모를 제공한다. 하지만,
-
HTML, CSS, JavaScript로 iPhone, Android 앱을 만들라.
-
10명에게 의미 있는 내부 애플리케이션을 만들라.
-
디자이너가 보여주거나 콘텐츠 개발자가 채울 수 있는 컨테이너를 프로그래밍하라.
-
작은 핵심부터 많은 기능으로 애플리케이션을 점점 키워나가라.
-
네트워크를 통해 내장형 장치와 통신하라.
-
어떤 게임을 1K나 10K 코드에 구겨 넣고 경쟁하라
-
서버에서 클라이언트로, 다시 피어(peer)로 애플리케이션을 배포하라.
세부사항은 애플리케이션의 범위와 기관의 크기에 따라 바뀔 수 있지만, 웹 문화와 웹 기술은 놀라운 범위를 가진다.
교잡 수분하는(Cross-pollinating) 웹 커뮤니티웹 프로젝트는 통합 프로젝트이며 다양한 분야의 기술을 결합한다. 인터페이스가 엉망이면 뛰어난 코드를 모호하게 할 수 있고 자원이 한계에 도달하면 정교하게 설계된 백엔드 시스템도 실패할 수 있다. "콘텐츠"는 여러 겉모습으로 위장하고 있으며 작성자와 삽화가(illustrator) 뿐만 아니라 비디오 전문가, 게임 디자이너, 그보다 더 많은 사람의 지원이 필요하다. 마케팅 담당자는 웹에서 사업을 시작하고 디자인에서 분석까지의 대화에 영향을 미친다.
웹 개발 모델은 코드 이상을 포함한다. 디자이너와 콘텐츠 개발자는 주요 구성원이며 그들에게 도움을 주는 도구를 사용한다. 한편, 프로그래밍에서 유래한 Git 같은 도구가 웹 디자이너 사이에서 새로 자리잡고 있다.
웹 도구와 접근 방식의 폭발적인 증가웹은 성장하면서 계속 변한다. HTML, CSS, JavaScript 같은 고전적 도구가 모두 다시 활발한 움직임을 보이며 표준 단체에서 불화를 일으킬 만큼 중요하다. 웹 컴포넌트는 새로운 조각을 패키징하는 새로운 방법을 제공하고 개발자가 그들 프로젝트를 포함하여 공유하는 것을 돕는다. 이 표준의 핵심 위의 레이어에는 훨씬 더 부드럽고 대체로 오픈 프레임워크와 개발자 도구로 가득 차 있으며 크고 작은 참여자가 중요한 공헌을 한다. 웹의 모든 레벨에서 한 종류 이상의 아키텍처를 찾을 수 있다.
결과는 도구와 선택에서의 엄청난 성장이다.
- Douglas Crockford가 옳았다. JavaScript는 강력한 언어이며 계속 새로운 쓰임새를 찾는다.
-
CSS는 점점 더 중요해지는 선언적(declarative) 접근 방식을 사용한다.
-
변종 MVC을 위한 프레임워크가 계속 나타나고 발전한다.
-
레이아웃 프레임워크도 기본이 되고 있다.
-
전통적 웹 레이어가 여전히 동작한다. 하지만, 한 페이지 앱과 아이소모픽(isomorphic, 역자주: 동형) 및 하이브리드 접근 방식은 다른 사용 사례를 위해 아키텍쳐 모델의 범위를 확장한다.
-
사이트인가? 앱인가? 단지 서비스인가? 웹은 점점 더 전달(delivery) 모델을 지원한다.
-
HTTP 2/0, WebSocket, WebRTC는 무거운 클라이언트-서버에서 가벼운 클라이언트-서버, 다시 피어투피어(P2P)로의 통신 옵션을 가능하게 하는 공통 범위를 확대한다.
-
Famo.us는 WebGL과 JavaScript로 클라이언트 스택을 완전히 다시 만들려고 한다.
웹은 프랙탈(fractal, 역자주: 차원 분열 도형)이고, 다양성은 살아있다는 표시이다.
전체 스택에서 매일 일하지는 않더라도 이를 알아두어라매우 적은 수의 용감한 개발자는 여전히 프론트 엔드의 인터페이스 디자인을 꾸미는 것부터 백엔드의 데이터베이스 연결을 최적화하는 것까지 사이트와 앱의 모든 면을 커스터마이징한다. 더 많은 사람이
LAMP 스택이나
MEAN 스택 같은 표준화된 도구 세트를 선택하며 충분한 도움을 받을 수 있는 경계선 내에 있기를 기대한다. 하지만 효율적인 웹 시스템 제작은 애플리케이션 레이어의 상호작용법과 통신 스타일 이해를 의미한다. 적어도 당신의 작업이 상호작용하는 레이어를 이해하는 것을 의미한다.
규율(discipline)은 선택이다웹의 하이퍼텍스트 기반은 궁극적으로 엉망인 GOTO일 수 있다. 하지만 유연성을 제공하면서 순서와 구조를 만들 수 있게 한다. 검색은 웹이라는 뒤얽힌 연결의 정점에 일관성을 쌓아 놓는다. 자주 JavaScript는 엉망이라고 비판 받지만 CSS는 엄격한 선언적 프로그래밍 언어이다. 반면에,
핵(Hack)은 PHP의 규율이다. 프로그래머는
HTTP과 웹의 아키텍쳐 선택으로부터 배울 수 있다. 적절한 규율은 다른 문화와 문맥에서 많은 다른 의미가 있으며, 때로는 모두가 짜증날 수도 있다는 것을 보장한다. 다른 종류의 규율과 장기적 유지 비용의 관계 또한 제대로 예측할 수 없다.
웹 서비스 개발하기와 웹 서비스에서 개발하기멋진 매쉬업은 사업의 기반이 되었고 책임 분산을 쉽게 했다. 이 "스택"은 그것의 다른 조각을 다른 사람이 제어할 때 새로운 의미가 있다. 서비스 지향 아키텍처(Service-Oriented Architecture, SOA)는 업계에서 웹 토대 위에서 만들고 공공 서비스는 세계로 확장된다. 전체 애플리케이션을 혼자 만들 필요가 없다. 대신, 독특한 면, 지불(payment), 지도, 저장공간(storage), 더 많은 종류의 다른 사람이 제공하는 서비스 조립에 필요한 접착제를 만들어 낸다.
웹 신원(identity), 프라이버시, 보안: 나를 더 안전하게 하라단지 몇 자리 숫자인 신용 카드 데이터조차 적절히 기억하고 잊어버리기가 어렵다. 이러한 질문을 둘러싸고 있는 신원, 보안, 프라이버시 문제는 흥미로운 방식으로 상호작용한다. 세 단어 각각은 웹의 다른 참여자에게 다른 의미를 지닐 수 있다. 개방과 안전 역시 복잡한 조합이다. 브라우저 보안과 프라이버시 설정은 (다른 것들이 동작하고 있을 때) 기본적으로 모바일 운영체제 보안과 프라이버시 설정보다 더 세밀하고 제한적으로 유지된다. 이 권한은 도움이 되지만 충격적이게도 어떻게 이를 얻는지에 대해 거의 모른다.
웹에 깊이 관여하기이제는 웹은 화면상의 텍스트와 그래픽의 단순한 스크롤이 아니다. 데이터를 전송하려고 웹 프로토콜을 사용하는 장치처럼 때로는 화면이 없으며 이는 종종 웹 인터페이스로 나타난다. 장치는 우리가 어디에 있는지 어떻게 움직이고 있는지 알고 있으며 새로운 API와 가젯류는 JavaScript로 하드웨어에 접근한다. 다른 경우에 화면은 그래픽을 포함하고 훨씬 더 복잡하고 인터랙티브한 이미지를 사용자에게 보여준다. 새로운 통신 프로토콜 WebRTC와 WebSocket은 가벼운 P2P 통신에서의 새로운 미개척 분야를 연다. 새로운 API는 개발자가 오디오와 비디오를 보여주기만 하는 것이 아니라 생성하고 조작할 수 있게 하고 있다.
데이터가 웹을 만들고, 웹이 데이터를 만든다우선, 얼마나 많은 방문자가 있는지 집착했다. 그 다음에는 우리 사이트의 검색 엔진 순위가 어디에 있는지 집착했다. 오늘날엔 어떻게 방문자가 웹 사이트와 앱을 사용하는지에 대해, 그리고 더 나은 인터페이스와 더 효율적인 통신을 위해 그 데이터를 적용하는 것에 대해 점점 더 배우고 있다. 또한, 다른 종류의 데이터를 기반으로 사이트를 만들고 있고 단지 문서가 아닌 데이터를 위한 인터페이스를 웹으로 만들고 있다. 모든 것을 정량화할 수는 없지만, 정량화될 수 있는 것들은 도움이 된다.
앞으로 몇 달 후 분석, 인터뷰, 그리고 계속되는 보도를 통해 이러한 주제를 각각 깊이 살펴볼 것이다. 이 탐험은 활발한 피드백 순환이 있으면 가장 잘 동작한다. 당신의 생각을 Twitter(
@simonstl)와 email(simonstl@oreily.com)로 공유해주기 바란다.