니름: 마이크로서비스 개발을 위한 IDL (인터페이스 정의 언어) 컴파일러 및 RPC (원격 프로시져 호출) / 분산 객체 프레임워크

Sprinter

홍민희 스포카

https://hongminhee.org/

스포카에서 일하고 있는 파이썬 프로그래머이고, 또 자유 및 오픈 소스 소프트웨어에 열정이 있습니다. 고등학생 때 친구들과 게임을 만들다가 스크립팅 엔진으로 쓸 언어를 찾다가 파이썬과 만난 뒤, 10년 넘게 일과 취미 모두 파이썬과 함께 했습니다. 이미지를 다루기 위한 Wand, 소규모 팀에서 SSH 키를 관리하기 위한 Geofront, 마이크로서비스 설계에서 RPC를 위한 언어인 Nirum, HTTP API를 문서화하기 위한 sphinxcontrib-httpdomain 등을 만들었습니다.


Tutorial Information

일시 : 2017년 8월 14일 ~ 15

시간 : 오전 10시 ~ 오후 6시

장소 : 코엑스 그랜드볼륨 2층 

< 신청 >

14일 : https://onoffmix.com/event/108239

15일 : https://onoffmix.com/event/108240


Sprint Language

Haskell, Python, TypeScript

Project brief

니름은 요즈음의 “마이크로서비스 설계”(MSA) 또는 전통적인 “서비스 지향 설계”(SOA)를 구현할 때, 지루하고 반복적인 직렬화 및 파싱, 네트워크 통신, 잘못된 입력에 대한 오류 처리 등을 자동화해주는 개발 도구입니다. 이 주제로 작년 파이콘 APAC에서 했던 발표도 참고해주세요. https://speakerdeck.com/minhee/rpc-peureimweokeu-jejag-sabjilgi

니름은 크게 다음의 여러 요소들을 포함합니다.

1. 서로 다른 언어로 작성된 여러 서비스들 사이에서 공통된 인터페이스를 정의하기 위한 중간 인터페이스 정의 언어 (IDL)
2. 위 언어의 컴파일러
3. 여러 서비스들 사이에서 통신하는 일정한 방식을 정한 프로토콜
4. 위 프로토콜의 타겟 언어별 런타임 라이브러리/프레임워크

1과 3은 실제 구현이 아닌 명세에 가까우며, 명세는 영어로 작성되어 있습니다. (그리고 계속 개선되고 있습니다.) https://github.com/spoqa/nirum/tree/master/docs

2는 컴파일러 구현에 특화된 Haskell로 작성되어 있습니다. https://github.com/spoqa/nirum

4는 지원하는 타겟 언어에 대해 한 벌씩 존재하며, 현재는 Python 구현이 있습니다. https://github.com/spoqa/nirum-python 하지만 TypeScript도 개발중입니다.

스프린트에서는 주로 4를 다루겠지만, Haskell에 이미 익숙하시거나 이번 기회에 Haskell 코딩을 해보고 싶은 분들께는 2번도 도와드립니다. 새로운 타겟 언어를 추가하는 것도 좋습니다. (새 타겟을 추가하는 것도 Haskell 코딩은 필요합니다.) 영어가 불편하지 않다면 1번과 3번에 기여해주시는 것도 환영합니다. 문서와 이슈에서는 영어를 쓰지만, 개발 과정에는 한국어를 씁니다.

기존 이슈들도 참고해보시면 좋습니다. https://github.com/spoqa/nirum/issues



Project URL

http://nirum.org/



Back to list

Sponsors

플래티넘

골드

실버

브론즈