2017.07.04

분산된 IoT 마이크로서비스에 P 언어가 필요한 이유

James Kobielus | InfoWorld
‘비동기’는 무서운 단어다. 비동기와 함께 발생하는 이벤트에 주의하면서 어떻게든 따라잡히지 않도록 도망가야 함을 의미한다.

이벤트 기반 비동기는 프로그래밍 프레임 워크로, 맞춤형 사물 인터넷을 위한 서버리스 컴퓨팅의 기초다. 만약 IoT 컨텍스트에서 이벤트 시나리오를 고려하면, 최고의 드라이버는 타이밍, 시퀀싱, 주파수에 따라 달라지고, 가능한 모든 방향으로 시스템 런타임 행동을 임의로 바꿀 수 있는 끝없는 센서 인풋의 행렬일 것이다.

이벤트 주도의 마이크로서비스 상호작용을 이런 센서 기반의 복잡성을 가진 레이어로 만들면, 오늘날의 사물인터넷 환경은 그저 이벤트가 발생하기만을 기다리는 비동기적 광기의 쥐구멍이라는 점이 명백해진다.

분산된 사물인터넷 마이크로서비스에 탄력성을 가져오려면, 기본적으로 비동기적인 기본 물질을 완전히 통제하는 고도의 프로그램 가능한 추상화가 필요하다. 오픈소스 프로그램 언어이자 최근 마이크로소프트가 임베디드 시스템, 인공지능 앱, 클라우드 서비스에서 비동기 애플리케이션 프로그램에 도입한 P를 다룬 최근 InfoWorld 기사를 읽고 필자가 받아들인 것도 이것이다.

필자에게 생소했던 개념은 “조사 시 종종 사라지곤 하는 타이밍 관련 버그”로 정의할 수 있는 ‘하이젠버그(heisenbug)”였다. 하이젠 버그라는 용어는 ‘하이젠 베르크의 불확정성 원리’에서 따온 말로, 필연적으로 상태를 바꾸는 시스템을 관찰하려는 환경에서 일어난다.

컴퓨팅 환경과 관련해 하이젠버그라는 불확정성 버그는 행동을 변경하는 시스템에 비동기 테스트 핑을 전송하는 프로브 효과와 같다. 이 말의 뜻은, 어떤 시스템적 결함을 분리하고, 분석하고, 디버그하려는 바로 그 행동이 기저의 시스템적 행동을 변화시키며, 문제의 버그가 재발하지 않도록 할 수 있다는 것이다. 하이젠버그의 주요 발생 원인 중 하나는 경쟁 조건인데,
비동기적 인풋 이벤트가 시스템이 통제하는 프로그램이 예상하는 특정 순서로 일어나지 않을 때 시스템이 비정상적으로 움직이는 경쟁 조건(race condition)이다.

사물인터넷, 근본적인 비동기 컴퓨팅 환경에서 이벤트 주도의 비동기 상호작용에 대한 모든 가능한 시나리오를 예상할 수 있는 프로그래머가 과연 있을 수 있을까? P 언어 같이 안전한 비동기적 이벤트 주도 프로그램 언어가 모든 사물인터넷과 마이크로서비스 개발자 툴키트에 꼭 들어가야만 하는 도구인 이유가 바로 이것이다.

이러한 언어는 개발자가 런타임 환경 프로세스 비동기 이벤트 메시지 의 순서와 상관 없이, 컴플라이 코드로 수행되는 실행 단계의 정확한 시퀀스를 특정할 수 있게 한다. 개발자는 비동기 이벤트를 다루는 코드를 생성하는 추상화 레이어를 활용해 애플리케이션 논리를 구축할 수 있다. 이들 스테이트 머신은 시퀀스 상에서 적절한 자리를 잡을 때까지 특정 이벤트 처리를 지연하는 역할을 한다.

IOTA 분산 하이퍼레저 블록체인 등 분산 사물인터넷 기반 마이크로서비스가 이렇게 안전한 이벤트 주도의 프로그래밍 언어 없이 강력해질 수 있을 것이라고는 생각하기 어렵다. 또, 느슨하게 연결된 이벤트 중심 패브릭을 바탕으로 상호운영되는 분산 서비스 가운데 분산 스테이트 트랜지션을 실행하는 능력 없이도 사물인터넷의 RESTful API가 예측 가능한 실시간 응답과 프로그래밍 효율성을 제공할 수 있을지 역시 불투명하다.

물론, 사물인터넷처럼 복잡하게 분산된 시스템에는 언제나 많은 버그가 생겨날 것이다. 그러나 산업 인터넷에 전력을 공급하는 스마트 센서처럼, 사물인터넷의 바탕에 있는 런타임 플랫폼에서는 버그를 격리하는 것이 훨씬 더 쉬울 것이다. 개발자가 사물인터넷의 비동기 통합 패브릭에서 생성될 수 있는 결함을 제거하는 프로그래밍 환경을 활용할 수 있다면 말이다. editor@itworld.co.kr 



2017.07.04

분산된 IoT 마이크로서비스에 P 언어가 필요한 이유

James Kobielus | InfoWorld
‘비동기’는 무서운 단어다. 비동기와 함께 발생하는 이벤트에 주의하면서 어떻게든 따라잡히지 않도록 도망가야 함을 의미한다.

이벤트 기반 비동기는 프로그래밍 프레임 워크로, 맞춤형 사물 인터넷을 위한 서버리스 컴퓨팅의 기초다. 만약 IoT 컨텍스트에서 이벤트 시나리오를 고려하면, 최고의 드라이버는 타이밍, 시퀀싱, 주파수에 따라 달라지고, 가능한 모든 방향으로 시스템 런타임 행동을 임의로 바꿀 수 있는 끝없는 센서 인풋의 행렬일 것이다.

이벤트 주도의 마이크로서비스 상호작용을 이런 센서 기반의 복잡성을 가진 레이어로 만들면, 오늘날의 사물인터넷 환경은 그저 이벤트가 발생하기만을 기다리는 비동기적 광기의 쥐구멍이라는 점이 명백해진다.

분산된 사물인터넷 마이크로서비스에 탄력성을 가져오려면, 기본적으로 비동기적인 기본 물질을 완전히 통제하는 고도의 프로그램 가능한 추상화가 필요하다. 오픈소스 프로그램 언어이자 최근 마이크로소프트가 임베디드 시스템, 인공지능 앱, 클라우드 서비스에서 비동기 애플리케이션 프로그램에 도입한 P를 다룬 최근 InfoWorld 기사를 읽고 필자가 받아들인 것도 이것이다.

필자에게 생소했던 개념은 “조사 시 종종 사라지곤 하는 타이밍 관련 버그”로 정의할 수 있는 ‘하이젠버그(heisenbug)”였다. 하이젠 버그라는 용어는 ‘하이젠 베르크의 불확정성 원리’에서 따온 말로, 필연적으로 상태를 바꾸는 시스템을 관찰하려는 환경에서 일어난다.

컴퓨팅 환경과 관련해 하이젠버그라는 불확정성 버그는 행동을 변경하는 시스템에 비동기 테스트 핑을 전송하는 프로브 효과와 같다. 이 말의 뜻은, 어떤 시스템적 결함을 분리하고, 분석하고, 디버그하려는 바로 그 행동이 기저의 시스템적 행동을 변화시키며, 문제의 버그가 재발하지 않도록 할 수 있다는 것이다. 하이젠버그의 주요 발생 원인 중 하나는 경쟁 조건인데,
비동기적 인풋 이벤트가 시스템이 통제하는 프로그램이 예상하는 특정 순서로 일어나지 않을 때 시스템이 비정상적으로 움직이는 경쟁 조건(race condition)이다.

사물인터넷, 근본적인 비동기 컴퓨팅 환경에서 이벤트 주도의 비동기 상호작용에 대한 모든 가능한 시나리오를 예상할 수 있는 프로그래머가 과연 있을 수 있을까? P 언어 같이 안전한 비동기적 이벤트 주도 프로그램 언어가 모든 사물인터넷과 마이크로서비스 개발자 툴키트에 꼭 들어가야만 하는 도구인 이유가 바로 이것이다.

이러한 언어는 개발자가 런타임 환경 프로세스 비동기 이벤트 메시지 의 순서와 상관 없이, 컴플라이 코드로 수행되는 실행 단계의 정확한 시퀀스를 특정할 수 있게 한다. 개발자는 비동기 이벤트를 다루는 코드를 생성하는 추상화 레이어를 활용해 애플리케이션 논리를 구축할 수 있다. 이들 스테이트 머신은 시퀀스 상에서 적절한 자리를 잡을 때까지 특정 이벤트 처리를 지연하는 역할을 한다.

IOTA 분산 하이퍼레저 블록체인 등 분산 사물인터넷 기반 마이크로서비스가 이렇게 안전한 이벤트 주도의 프로그래밍 언어 없이 강력해질 수 있을 것이라고는 생각하기 어렵다. 또, 느슨하게 연결된 이벤트 중심 패브릭을 바탕으로 상호운영되는 분산 서비스 가운데 분산 스테이트 트랜지션을 실행하는 능력 없이도 사물인터넷의 RESTful API가 예측 가능한 실시간 응답과 프로그래밍 효율성을 제공할 수 있을지 역시 불투명하다.

물론, 사물인터넷처럼 복잡하게 분산된 시스템에는 언제나 많은 버그가 생겨날 것이다. 그러나 산업 인터넷에 전력을 공급하는 스마트 센서처럼, 사물인터넷의 바탕에 있는 런타임 플랫폼에서는 버그를 격리하는 것이 훨씬 더 쉬울 것이다. 개발자가 사물인터넷의 비동기 통합 패브릭에서 생성될 수 있는 결함을 제거하는 프로그래밍 환경을 활용할 수 있다면 말이다. editor@itworld.co.kr 

X