자세히 보기

Simon Bisson
Contributing Writer

첫인상 | 만인을 위한 API 매시업 툴 ‘마이크로소프트 플로우’

마이크로소프트 플로우(Flow)는 입력-출력-단순 동작을 연결하는 애플리케이션을 누구나 쉽게 만들 수 있게 해준다.

모든 클라우드 애플리케이션이 클라우드 규모여야 하는 것은 아니다. 한 출처로부터 정보를 취하고 최소한으로 처리한 후 전달하는 단순한 전달 및 전환 앱인 경우도 많다. IFTTT와 야후 파이프(Yahoo Pipes) 같은 툴을 이용해 서비스끼리 연동시키는 정보 흐름을 신속하게 구축하고 공유하는 케이스가 이에 해당한다. 그러나 안타깝게도, 야후 파이프는 중단되었으며 IFTTT는 단순한 사물인터넷(Internet of Things) 연동에 집중하고 있다.

이는 오늘날 시장에 IFTTT의 기본적인 1개 입력 및 1개 출력 맵핑보다 더욱 복잡한 연산 체인을 처리할 수 있는 새로운 툴을 위한 자리가 있다는 뜻이기도 하다. 애플리케이션들 그리고 API들 사이에서 이런 종류의 연결을 자동화하기 위해 Node.js에서 마이크로서비스를 구축할 수 있기는 하지만 이는 다소 지나친 선택일 수 있다. 애저 로직 앱스(Azure Logic Apps) 또는 AWS 람다(AWS Lambda)도 마찬가지다.

새 시각 개발 툴인 파워앱스(PowerApps)의 출시와 함께 마이크로소프트가 최근 새 연결 기반 개발 툴인 플로우(Flow)를 공개했다. IFTTT 및 파이프와 마찬가지로 플로우는 출력과 입력을 신속하게 연결하여 입력 시 이벤트로 동작하는 애플리케이션을 개발하고 하나 이상의 서비스로 응답을 전달할 수 있도록 개발됐다.

IFTTT가 트윗(Tweet) 스트림을 스캔하고 특정 콘텐츠를 파일로 저장할 수 있다면, 플로우는 입력을 취해 더욱 복잡한 정보 흐름을 위한 기반으로 활용할 수 있다. 복수의 정보 출처에 쿼리(Query)를 발송할 수 있고, 결과적으로 다중 동작을 처리할 수 있기 때문이다.

마이크로소프트 플로우는 사전정의된 서비스(박스, 다이나믹 CRM 등)와 연결하는 기능을 지원한다. 또는 스웨거(Swagger) 정의 또는 HTTP URL을 통해 퍼블릭 API에 연결시킬 수도 있다.

현재 초기 12개 서비스(그리고 더 많은 API)를 지원하는 마이크로소프트 플로우는 분명 지루한 작업을 자동화하기 위해 개발됐다. 지원되는 서비스로는 트위터(Twitter), 기트허브(GitHub), 세일즈포스(Salesforce), 드롭박스(Dropbox), 슬랙(Slack), 오피스 365(Office 365) 등이 있으며 오피스 그래프(Office Graph)에도 접근할 수 있다.

이런 서비스를 이용해 트위터를 스캔하여 제품에 대한 언급을 찾고 제품 팀을 위한 슬랙 채널로 전달함으로써 해당 팀이 사용자들이 자신의 제품에 관해 무슨 이야기를 하는지 파악하도록 할 수 있다.

입력과 출력 그리고 가정과 결과
마이크로소프트는 다양한 작업을 처리하는 63개의 초기 템플릿을 제공하고 있으며, 모두 커스터마이징이 가능하다. 템플릿들의 종류는 고객 관계 관리, 데브옵스(Devops) 알림에서부터 온라인 생활을 관리하는 방안들, 스토리지와 소셜 미디어, 이메일, 기타 클라우드 서비스를 잇는 것들에 이르기까지 다양한 범위를 아우른다.

필자가 작업해본 과정은 다음과 같다. 일단 필자는 일단 기본 템플릿 중 하나를 지정하여 필자가 전송한 트윗을 취하여 필자의 개인용 원드라이브(OneDrive)에 CSV 파일로 저장하도록 했다. 플로우 수정은 상대적으로 간단하다. 브라우저에서 기본적인 흐름도 형태로 템플릿의 핵심 요소가 제공되며 화면 상단에는 입력이 있고 하단에는 출력이 있다. 블록을 클릭하면 속성을 열 수 있다. 예를 들어, 트위터 블록에서는 표준 트위터 쿼리를 볼 수 있다.

플로우 시작을 돕기 위해 마이크로소프트는 사전제작된 솔루션 라이브러리를 제공한다. 이들은 빠르게 커스터마이징될 수 있으며 사용자 독자적 플로우를 위한 기반 요소로 활용될 수 있다.

플로우와 IFTTT의 큰 차이점은 조건문 지원이다. 예를 들어, 필요한 파일이 없는 경우 사용자 플로우(Flow)가 이를 생성하고 초기 데이터 세트를 위치시키도록 할 수 있다. 일단 생성된 후라면 대체 경로가 해당 파일에 새 데이터를 추가한다. 플로우는 다양한 기본적 조건문 연산자를 제공하지만 상대적으로 복잡한 애플리케이션을 구축하기에도 충분하다. 사용자는 입력, 쿼리, 조건문을 연계하여 입력부터 자신이 선택한 출력까지 플로우 흐름을 제어할 수 있다.

플로우는 융통성이 뛰어나다. 제공된 템플릿 대신 자신만의 플로우를 구축하다 보면 스웨거(Swagger) API 정의를 이용해 임의적인 REST API를 흐름에 신속하게 연계시킬 수 있다는 사실을 발견하게 된다. 또한 슬랙 등의 애플리케이션에서 웹 후크(Hook)로 연결하는 옵션인 HTTP 동작으로 연결하거나 웹 형태를 통해 또는 JSON을 통해 전송되는 데이터를 처리할 수 있다. 기본적인 제어에 한정되지 않는다는 뜻이기 때문에 중요한 기능이다.

또한 파워앱스(PowerApps) 앱에 흐름을 구축해, 자체 UI를 보유하도록 할 수도 있다. 아울러 각 블록을 탐색할 수 있게 해주는 동작별 보고서를 통해 디버깅(Debugging) 작업을 간단히 할 수 있다. 이 보고서는 무엇이 잘못되었는지 그리고 무엇이 잘 되었는지(이 또한 중요하다) 파악할 수 있게 해준다.

이제 시작일 뿐
그 결과 가려운 곳을 신속하게 긁어줄 수 있는 작고 강력한 툴이 만들어진다. API에 도달할 수 있는 능력은 다양한 일련의 입력 유형을 지원하기 때문에 중요하다. 마이크로소프트는 사용자가 자신이 선택한 입력에 사용할 수 있도록 플로우에 충분한 경로 도달성을 제공했다. 심지어 플로우가 정의하는 특정 트리거(Trigger)가 아니더라도 상관 없다. 단 이 단계에서는 출력이 다소 제한적일 수 있다. 오피스 그래프와 엑셀(Excel) 외에 더욱 다양한 문서 유형을 포함하여 다양한 개체를 지원했으면 하는 바람이다.

플로우가 어떻게 동작하는지 탐색할 수 있게 해주는 플로우의 시각 디버깅 툴이 마련돼 있다. 성공 단계와 실패 단계를 모두 확인할 수 있다.

플로우 개발 과정의 몇몇 측면은 여전히 버그가 존재하는데, 특히 원드라이브 통합과 관련된 부분이 그랬다. 예를 들어 긴 폴더 목록을 스크롤하기가 거의 불가능했으며 사용하고 싶은 폴더를 수동으로 입력해야 했다.

이런 사소한 문제들이 남아 있기는 하지만 플로우는 안타깝게 사라져버린 야후 파이프의 대체재로 자리잡아가고 있다.

플로우는 프로그래머가 아닌 사람들도 빠르게 이해할 수 있는 서비스다. 템플릿을 사용자 지정하여 손쉽게 시작할 수 있지만 자신만의 흐름을 구축한 뒤에는 흐름과 프로그램 블록의 그래픽 레이아웃이 쉽게 이해된다. 단 이를 위해서는 템플릿과 기본적인 동작 이상의 것을 원한다면 RESTful API의 문법에 익숙해져야 한다.

이 밖에 플로우의 스웨거 API 설명 언어 지원은 많은 것들을 단순화해줄 수 있다. 최소한 사이트와 서비스가 스웨거 정의를 제공하는 곳에서는 그렇다.

플로우 및 파워앱스 등의 툴을 통해 마이크로소프트는 소소한 문제들을 해결하고 싶어하는 이들을 공략하고 있다. 플로우는 일반적인 용도의 프로그래밍 툴이 아니지만 그럼에도 불구하고 강력하고 유연하다. 누구든 사용할 수 있는 플로우는 새로운 애플리케이션 개발 스타일을 열어내는 새로운 통로일지도 모른다.

* Simon Bisson은 학계 및 통신 업계에서 경력을 쌓아온 전문가다. UK 온라인 기술 부문을 이끈 바 있으며 신생기업 CTO 직무도 수행했다. 컨설팅 및 기술 전략 업무 경력도 보유하고 있다. dl-ciokorea@foundryco.com

Simon Bisson

Author of InfoWorld's Enterprise Microsoft blog, Simon Bisson prefers to think of “career” as a verb rather than a noun, having worked in academic and telecoms research, as well as having been the CTO of a startup, running the technical side of UK Online (the first national ISP with content as well as connections), before moving into consultancy and technology strategy. He’s built plenty of large-scale web applications, designed architectures for multi-terabyte online image stores, implemented B2B information hubs, and come up with next generation mobile network architectures and knowledge management solutions. In between doing all that, he’s been a freelance journalist since the early days of the web and writes about everything from enterprise architecture down to gadgets. He is the author of Azure AI Services at Scale for Cloud, Mobile, and Edge: Building Intelligent Apps with Azure Cognitive Services and Machine Learning.

이 저자의 추가 콘텐츠