プロフェッショナルサービスのソフトウェア開発
プロフェッショナルサービスでは、日々の運用やサービス提供を支えるための一連のツールやアプリケーションを開発しています。
私たちはツールやアプリケーションが共通の設計構造パターンに従うよう努めています。
私たちのツールはすべて、gitlab.com 上の Professional-Services-Automation グループに置かれています。
標準セットアップ
Python
バックエンド開発の大半には Python を使用しています。依存関係マネージャーには Poetry を選んでいます。
REST API
デフォルトの REST API フレームワークは Flask です。
デフォルトライブラリ
後述するテストライブラリのほかに、GitLab PS Utils という共通ユーティリティライブラリがあります。プロトタイピングや開発時間を短縮するためのヘルパー関数やクラスが多数含まれています。
Javascript
フロントエンド開発には Javascript を使用します。Javascript フレームワークには Vue.js を選んでいます。Javascript の依存関係は NPM で管理し、Node/NPM のインストールは NVM で管理します。
データベース
MongoDB または DynamoDB を使用します。MongoDB へは PyMongo で、DynamoDB へは PynamoDB でアクセスします。
ローカルテスト
AWS の外で AWS リソースをモックする必要がある場合は、Localstack を使用します。
Python のテストには Pytest、mock、unittest を組み合わせて使用します。
パッケージングとデプロイ
ツールは Docker イメージまたは Pip パッケージとしてパッケージングします。たとえば私たちの evaluate ツールは、その両方の形式でパッケージングされています。すべての Docker イメージは、ツールの GitLab.com 上のコンテナレジストリにデプロイされます。
サーバーレスの WSGI ベースのアプリケーションを AWS にデプロイする必要がある場合は、Zappa を使用します。
フォルダ構成の例
└── ps-tool # Root of git repo
├── Dockerfile # Dockerfile for packaging
├── ps-tool # Python source directory
│ ├── ... # Any python code
│ └── __init__.py
├── LICENSE
├── poetry.lock # File generated by Poetry listing all installed packages. Must be source controlled
├── pyproject.toml # Dependency file used by Poetry to track dependencies
└── README.md
