2017.4.24 開発スタイル

イトクロのエンジニア・デザイナーブログはじめました

Hello, World!
初回なのでおまじないを唱えておきます。

イトクロで働くエンジニアやデザイナーは、多くの技術的な課題に直面しながらも、日々それを解決するために挑戦を行っています。
その過程で得たノウハウなど技術的な内容を発信していきますので、ご期待ください。

初回の投稿として、まずはイトクロの主なシステム構成を紹介します。

主なシステム構成

システム構成

社内の開発・運用のノウハウを活かすため、Webアプリケーション開発に親和性の高いベーシックなLAMP環境(Linux、Apache、MySQL、PHP)をベースとしたシステム構成で、自社メディアの制作・開発を行っています。

言語とフレームワーク

プログラム言語は PHP をメインに使用しています。
フレームワークは CakePHP を採用して、イトクロ独自の機能拡張・カスタマイズを現在進行形で続けています。

WEBサーバ

Apache を採用しています。
規模が大きいサイトでは、フロントに Nginx (リバースプロキシ + ロードバランサ)を置き、バックエンドにアプリケーションサーバを配置した構成としています。

データベース

情報量が多くかつ最も普及している MySQL を採用しています。
クエリの発行回数が多く、データベースのレスポンスがボトルネックとなっていた時期もありましたが、HAProxy を導入して、アプリケーションサーバから MySQL への接続を分散することで負荷を低減させています。
脆弱性対策の観点からも、計画的にバージョンアップを実施しています。バージョンを追うごとにオプティマイザも改善されパフォーマンスも向上していますが、最適化の追求は日々続けています。

キャッシュエンジン

Memcached を使用しています。
高速なシステムレスポンスを実現するために利用しており、例えば MySQL の抽出データをキャッシュしておくことでクエリ発行回数を減らすということを行っています。

ソースコード管理

Git を採用しています。
新規プロジェクトで少しずつ取り入れたことで、SVNが主流だった現場でも大きな混乱もなく使うことが出来ています。
また、コードレビューの体制を整えるためにも既存プロジェクトを SVN から Git へと移行を進めているところです。

デプロイ

CIには Jenkins を利用しています。
以前は手順書を作成し手動デプロイを行っていましたが、プロジェクトと共にエンジニアの人数も増え、作業や管理のコストも同様に増加していきました。
そのためデプロイの自動化を行いその作業コストを削減することで、他の生産的な作業に集中出来るようになりました。

テスト

常にあるテーマとして、テストコストとのバランスがあります。
毎週のように、数十の機能改修を行う開発スピードを求められますが、同時に不具合ゼロを目指しています。
テストは、クラスやメソッドを対象とした機能単位を PHPUnit で、 Web UI を Selenium でそれぞれ自動テスト化し、それを Jenkins に組み込むことで、再帰的な実行が可能になりました。
テストの自動化が確立したことで、リファクタリングも容易に行えています。

環境構成

開発環境も含め、基本的には AWS を利用しています。
環境の種類として、「本番環境」、本番公開前の「ステージング環境」、自動テストを実行する「自動テスト実行環境」、開発段階で用いる「開発環境」と充実した確認が行えるような環境を整えています。

開発環境

誰でも同じ環境を再現できるように Vagrant を使用しています。
新規メンバーが参入するたび手順書を元に環境を構築していた時期もありましたが、Vagrantを導入して手順を自動化することで、環境統一と作業コスト削減の両方を実現することができました。
また、最近では Docker も使用しています。
メンバーによっては抱えているプロジェクトも多く、Vagrant 環境を複数用意して切り替えるのが大変なため、Docker コンテナで対応することもあります。

まとめ

サービスの成長とともに、蓄積されてきた技術的負債ですが、継続的なリファクタリングやリメイクで、コツコツと返済してきました。
品質や生産性の向上をいかにして実現するかをテーマに、常日頃から技術や業界の最新トレンドをキャッチアップし、業務に活かせないかをこれからも考えていきたいと思います。

現在イトクロでは、エンジニア・デザイナーを募集しています。
ユーザーファーストで価値のあるサービスを提供していきたい方、
技術を磨いていきたい方、ぜひご応募ください。

エンジニア募集中!
  • twitter
  • はてなブックマーク

関連記事

     関連記事はありませんでした