Sign up for free

This page is intended for users in Japan(English). Go to the page for users in United States.

サーバーレスアーキテクチャを利用しPythonでOWNERSを書き直しました

2018年7月末にOWNERSをフルリニューアルしました。

ukka Tech Leadの植本です。

7月末に OWNERS (オーナーズ) をフルリニューアルしました。
2015年にリリースされたOWNERSは元々LAMPで構築されていました。
非常に安定して可動していたのですが、ドラスティックに改善をまわしていくため、インフラから抜本的に見直す事を決め、スクラッチで書き直しました。
記事と購入という最低限の機能があるだけだった以前のバージョン 2.0 (Berry 系) と比較して、バージョン 3.0 (Carrot 系は) 「コミュニケーションファースト」というポリシーを掲げて設計されています。 より消費者と生産者のコミュニケーションを活性化し、人間関係があるからこそ購買が起こるという流れに少しでも近づけていこうという意図を軸にしたアップデートになります。この記事では、その技術的バックグラウンドがどのように変わったのかについてお伝えしたいと思います。

開発環境

一般的なツールを使いつつアジャイル開発で必要な機能を補完するためにいくつか追加したような構成です。

  • GitHub + ZenHub
  • Circle CI
  • Git (git-flow)

リポジトリはGitHubで管理し、タスクは全てissue化しています。
GitHubでのプロジェクト管理はアジャイル開発では少し機能不足なところがあるため、zenhubを採用しstory pointでの見積もりやburn down chart、release report などの機能でチームの進捗把握を補完しています。
また、Circle CIを導入しpushの度にテストをまわしています。特にデプロイは全てCI経由で行うようにし、developブランチへのマージでstaging環境へデプロイ、masterブランチへのマージでproduction環境へデプロイできるフローを構築しました。デプロイ作業はPCごとの環境の違いで問題が起こりがちな部分なので徹底的に人の手を排する事を意識しました。

サーバーレスアーキテクチャを採用しました

様々な理由からサーバーレスアーキテクチャを採用しましたが、一番の理由は運用の楽さでした。
また、開発言語にPython (3.6) を選んだので選択しやすかった、という経緯もあります。
インフラ面は自分の経験が豊富という理由でAWSを採用しています。
AWSでサーバーレスアーキテクチャを構築するなら一般的なAPI Gateway + Lambdaという構成です。Lambdaを利用する以上RDSは利用できないのでDBはすべてDynamoDBで構築しています。

ローカル環境はdocker化しました

ローカル環境構築のためにdockerを採用しつつ、同時に複数のコンテナを利用するのでdocker-composeを使っています。docker-macineはプロジェクト単位でホストを立ち上げるために使っています。

  • docker
  • docker-machine
  • dokcer-compose

作業に入る前に環境構築で時間をとられてしまうのはよくある話です。手順書をまとめる & メンテするのも手間がかかる話です。一つの解決法としてローカル環境を docker-compose up -d で一発起動する方法をとりました。エディタにPyCharmを利用しているとCEではdockerと連携できないという制約があったり、と問題もありましたが各エディタ向けに設定ファイルを追加して対応したりしています。
dockerで以下のような環境が立ち上がります。

  • Python 3.5
  • node.js
  • gulp
  • apex (Lambdaのデプロイツールとして)

積極的に新しい技術を採用しています

ありがたいことにデータ解析のできるメンバー (非エンジニア) がいるのでSQLの書ける環境が欲しいという要望がありました。DynamoDBは検索性に乏しいので、DynamoDBからAWS Glueを使ってS3にjsonファイルとして書き出し、Amazon Athenaからクエリできる環境を構築しました。ここは色々と模索している段階で、GCPのBig Queryも導入しようと準備しています。re:dashなどのBIツールも導入予定です。
また、フロントエンドはbootstrap, jQueryで実装していますが、既に負債化しているためvue.jsを導入しモダンでクリーンなアーキテクチャでの実装を試みたいと考えています。

エンジニアも生産者を支えたい

OWNERSは生産者に寄り添うサービスでありたいと思っています。ビジネスサイドに限らずエンジニアも生産者を支える姿勢を持ちたいです。
私の出身は兵庫県なのですが、今年地元の生産者さんに連絡をとりまくり 生にんにくひまわりオイルをOWNERSのプランとして公開することができました。
ビジネスサイドとエンジニアがケンカになるのはいろいろな組織でよくある話ですが、 ukka ではこのようなケンカを可能な限り少なくするため、誰もが一度は生産者さんを開拓して一口オーナープランを作って頂きたいと思っています。 売り上げを作っていく大変さをチーム全員が実感し、職種が違っても自信を持って生産者さんの視点に立った提案ができるようにすることが目的です。

私達は生産者に寄り添うサービスを作るために技術への投資と積極的に新しい技術を取り入れる姿勢を今後も崩しません。農業系スタートアップは日本の農や生産者に対する思いから素晴らしい企業が数多あるものの、最初から技術に立脚してスタートしたスタートアップが少なすぎるように感じます。ukkaは直近は少なくとも農業系スタートアップの中では1番ソフトウェア技術に強いと言われる組織を目指し積極的に採用を行っていきます。ぜひ一度お話しましょう。

追記: 人気の投稿ランキング1位になれました!

正直、ほぼ初めてポストした技術記事だったのでとても嬉しいです。
読んでいただいた方、本当にありがとうございます!

株式会社ukka's job postings
34 Likes
34 Likes

Weekly ranking

Show other rankings