API 접근 방법
바른의 API에 접근하기 위해서는 기본적으로 grpc를 이용해야 합니다.
grpc는 구글에서 만든 원격 프로시저 호출 체계입니다.
이것은 protobuf 메시지를 기반으로 활용하기 때문에 데이터는 압축되어서 전달됩니다.
또한 HTTP/2 규격을 사용하기 때문에 빠른 속도를 보장할 뿐 아니라 양방향 스트림, 흐름제어, 비동기모드 등을 사용할 수 있습니다.
무엇보다도 서버는 매우 간결한 구조에서 동작할 수 있고, 쉽게 쿠버네티스와 같은 플랫폼에 이식할 수 있습니다.
클라이언트는 C++, 자바, 고(Go), 파이썬, C#, PHP, 자바스크립트 등을 지원하기 때문에
언어에 대한 제약없이 마음대로 쓸 수 있습니다.
파이썬, 자바, 자바스크립트, R 등 기본적으로 제공되는 라이브러리들은 모두 grpc를 사용해서 호출을 하고 있습니다.
왜 필요할까요?
- 기본적으로 지원하지 않은 언어를 위한 클라이언트를 새롭게 만들 경우가 있습니다.
- 닷넷, GoLang, C++ 라이브러리를 만들 수 있습니다.
- 또는 기본 라이브러리가 추구하는 방식보다 더 단순하거나 더 고급스러운 방식이 필요할 수도 있습니다.
나만의 클라이언트 만들기
배포판은 바른와 관련된 2가지 서비스에 대한 규격을 제공하고 있습니다. shared/proto 폴더에
API 규격이 포함되어 있습니다.
- 형태소 분석기를 사용하는 경우에는 4개의 proto 파일이 존재하고,
- 바른 맞춤법 검사기를 사용하게 되면 모두 5개의 파일이 존재합니다.
여기에는 바른 맞춤법 검사기를 포함하여 5개의 파일을 보여줍니다.
$ find bareun-v3.0.0/shared/proto
bareun-v3.0.0/shared/proto/
bareun-v3.0.0/shared/proto/bareun
bareun-v3.0.0/shared/proto/bareun/language_service.proto
bareun-v3.0.0/shared/proto/bareun/lang_common.proto
bareun-v3.0.0/shared/proto/bareun/dict_common.proto
bareun-v3.0.0/shared/proto/bareun/custom_dict.proto
bareun-v3.0.0/shared/proto/bareun/revision_service.proto
이를 각 언어에 맞게 사용하려면 각 언어에 맞는 새로운 grpc 클라이언트용 라이브러리를 빌드해서 사용해야 합니다.
이 과정을 수행하려면 반드시 protoc라는 도구가 필요합니다.
protoc는 구글 protobuf 메시지를 컴파일활 수 있는 기본 개발 환경에 포함되어 있습니다.
또한 각 언어에 맞는 grpc 라이브러리 및 소스를 생성해 줄 수 있는 grpc 플러그인도 설치해야 합니다.
각 언어별 자세한 빌드 환경은 언어별 빌드환경을 소개하는 페이지를 참고하시고 필요한 언어를 선택하면 됩니다.
만드는 절차
graph TD
A[protoc 복사] -->B(protoc 컴파일)
B --> C[stub 코드]
C --> D[나만의 코드 생성]
D --> E[테스트 및 활용]