見出し画像

テイラーの技術スタックの紹介

こんにちはテイラーCTOの高橋です。
今回はテイラーでどんなテクノロジーを使ってプロダクトを開発しているか紹介したいと思います。

※この記事は主にエンジニアリングに興味のある人向けの記事となっております。

新しく会社を立ち上げて、プロダクトを作り始めよう!と思った時、当然ながら、そこになんの技術的な制約も負債もありません。好きな言語、ミドルウェア等々なんでも使い放題で、新しくて面白そうなものを選んでしまいたくなります。しかし、将来サービスやチームがスケールしていった際にそれが障害にならないように慎重に技術選択をしていく必要があります。そういう点も踏まえてテイラーで使っている代表的な技術とそれを選択した背景を説明したいと思います。

GraphQL / Apollo Federation

GraphQLはFacebookのエンジニアのByronが開発し、2015年に発表されたAPIの仕様です。Nodejsをはじめとして様々な言語で利用することができます。

HTTPベースのAPIとしてRESTが上げられますが、RESTはいわゆる設計思想のようなものであって明確な仕様がなく、実装によって呼び出し方やレスポンスはまちまちです。GraphQLはデータの問い合わせ=Query、書き換え=Mutation、購読=Subscriptionが言語として定義され、レスポンスやエラー時に仕様も策定されている上、自由度も高く、様々なアプリケーションのAPIが実装可能です。

Apollo FederationはGraphQLの複数のGraphQLのSubGraph、これはいわゆるマイクロサービスで、これらをGatewayで束ね、1つのGraphQLのエンドポイントとして提供することができる技術です。名前の通りApolloが開発しています。(余談ですが、ApolloもYCに採択されており勝手にシンパシーを感じています。)

Tailor Platform

Tailor platformは”エンタープライズが自社用のERPをローコードで構築するためのHeadless ERP基盤”で、上記の右側にある各マイクロサービスを自由に組み合わせ、お客様ごとに必要な機能の揃ったカスタムAPIアプリケーションを構築することができます。GraphQLとApollo Federationを利用し、この自由度の高いPlatformを開発しています。

Go言語

テイラーのバックエンドアプリケーションのほとんどはGo言語により開発されています。エンタープライズむけのアプリケーションとしてGoを採用している例はまだまだ少ない気はします。

言語の構文はシンプルで癖がなく他の言語経験者でも習得が比較的楽であること、実行バイナリも比較的軽く、libcなど他のライブラリに依存せず動かすことができ非常にポータビリティが高く、動作も高速です、さらにgo routineや構文木、それに最近はGenericsなど…. 

前述のGraphQLに関連してJavaScript/TypeScriptなどを連想した方もいるかと思いますが、テイラーではGraphQLのアプリケーションやFederation Gateway含めほとんどをGoで開発しています。

2022年時点で新たなサービスを作る際に選ぶ言語の選択肢としてはGoは上位に挙げられるのではないでしょうか?

React/Typescript

Headless ERPということで、バックエンドの開発しかないと思われている方も多いと思うのですが、実はフロントエンドの開発も行っています。

例を挙げると。。。

  • Tailor Platformをフロントエンド利用するためのSDKの開発

  • UIコンポーネント(Tailor Platform上でフロントエンドを開発するDeveloper向け)

  • 管理画面、全体のアプリケーションの管理やメトリクス表示やメンテナス

などがあります。

これらは主にReact/Typescriptで開発しており(Next.jsなども利用しています)Tailor platformの重要な要素にもなっています。

Reactはグローバルでみてデベロッパーが多く、Typescriptの型安全を十分に活かせるフレームワークだと感じていますため、テイラーで採用しています。


というわけで今回はテイラーの技術スタックについて解説しました。

興味を持っていただいた方、もっと詳しく話を聞いてみたいという方がいらっしゃいましたら(転職の意思は関係なく)ぜひ以下よりご応募ください。

■ 技術スタック
言語、ライブラリー:TypeScript, React, apollojs, Go, gqlgen, ent,Gorm, GraphQL, gRPC
インフラ:Google Cloud Platform, Amazon Web Service
データベース:PostgreSQL(Cloud SQL/RDS), Cloud Spanner
オーケストレーション:Cloud RunCI:GitHub Actions
コード管理:GitHub
ミドルウェア:Cloud Pub/Sub, NGINX, Cloud Functions, Cloud Tasks, AWS Lambda, Google Identity Platform
監視:Sentry, PagerDuty
環境構築関連:Docker, Docker Compose, Terraform