Labとは、アスタミューゼのエンジニアとデザイナーのブログです。アスタミューゼの事業・サービスを支えている知識と舞台裏の今を発信しています。開発プロセスはじめまして、JVMの世界に4年目、勇気と根性で乗り切る脳筋系エンジニア、chotaroと申します。astamuse.comのバグフィックスや改善活動を担当しています。今回はそのastamuse.comにおける改善活動の一部をご紹介します。同じ悩みを抱えている組織や、アスタミューゼの開発チームに興味を持たれた方の参考になれば、幸いです。ブラックボックス化する運用ツール長年メンテナンスを続けてきたサービスでは、その運用方法や使っている技術要素が負債になってしまう、というのはよくあることだと思います。astamuse.comも例に漏れず、そんな状況下にあります。実装やプログラムの品質面では過去にえいやさんが記事を上げていますが、運用においてはまた異なる起因からメンテナンスを行う必要が生じます。弊社開発チームでは、直接的にはメンバーの離脱や参入が見直しのきっかけとなりました。過去に作られたしくみが「どうやってかは分からないがとりあえず動いているからOK」という状態になってしまっており、修正も難しくなっていることを検知したためです。具体的には、webサイトの運用ツールリリース用のシェルスクリプトjenkinsのJOB構成(およびその環境)などのツールが対象です。それぞれ残されたドキュメントや動いているツールのコードをもとに改善・再構築を進めていますが、中でも特に問題であったのはリリース用のシェルスクリプトでした。既存の仕組みの問題点これまでのリリースのしくみは、以下のような構成になっていました。設定ファイルの権限変更および再配置cacheの削除など多くのタスクを条件に応じて行っており、上から下に読み下すことが困難な状態となっていました。そのため、リリースに必要なタスクの全容を把握することすらも難しくする要因となっていました。暗黙知化していたリリースプロセスもともとの構成は、全体としてオペレーションする開発者に依存する形となっているため、以下のような前提に基づいていたと考えられます。開発者は優秀なので、何かリリースで技術的な問題が起きてもシェルスクリプトを読めばすぐに問題点を解決できる。開発者は開発環境についても博識で注意深いので、ローカルとステージング・プロダクション環境での差分にも注意を払うことができる。開発者は構成管理についての知識と経験値を持っているので、デグレした資材をリリースするなんてありえない。ある意味で、性善説的な哲学に則っているように思われます。このあり方は人に大きく依存してしまうため、ノウハウが暗黙知化されてしまい、結果的にその人がいなくなったときのオーバーヘッドがかなり大きくなってしまいます。そのため、新しく開発チームに入ってきた人でも、少し努力すれば形式知に落とし込めるくらいにプロセスをわかりやすくする必要がありました。形式知化させるためのリリース戦略2つの方針を立てました。リリースはリモートの環境からそれぞれ行う。個人の環境に依存させないようにします。各開発者のローカル環境からリリースはできないようにする(=シェルスクリプトは廃棄。リリース作業用を行うマシンをクラウド上に配置し、リリースはそこから行う。リリースタスクを構造化してオートメーションツールに任せる。複雑怪奇なシェルスクリプトをオートメーションツールでリファクタリングします。リリースプロセスに伴うタスクを抽象化することで、実施するタスクの全容をわかりやすくする。構造化することによって、パラメータをタスクから分離させる(パラメータによって振る舞いを定義する)。条件分岐を可能な限りなくし、実行するタスクを明確にする。新しい仕組みに組み替える検討結果を踏まえ新しい構成は、以下のようになりました。構成図_after担当者はリリースする環境ごとのjenkinsにアクセスし、リリース用のjobを実行するjenkinsはgitlabからリリース対象のリポジトリをcloneするjenkinsはcloneしたリポジトリをもとにビルドを行い、warファイルなどリリース資材を作成するjenkinsはansible-playbookを実行し、ビルドした資材をアプリケーションサーバーに配備し、リリースが完了する改善効果タスクの実行管理ツールとしてjenkinsを、オートメーションツールとしてansibleをそれぞれ活用することにより、以下のような効果を生み出すことができました。jenkins採用のメリットクラウド環境のjenkinsから、開発チームであれば誰でもリリースが可能になった。常にgitから最新のリビジョンを取得するため、デグレリスクがほぼゼロになった。ansible-playbook採用のメリットリリースタスクが抽象化されたことで、参入したての人でもリリースにかかるタスクの流れを把握できるようになった。シェルスクリプトのときと比較してコード量が削減され、可読性、および保守性が向上された。astamuse.comのこれから。そんな改善活動を推し進めているastamuse.comですが、事業モデルや取り巻く環境の変化に合わせ、プロダクトの方向性を再検討する必要が生じてきています。開発に携わるメンバーが変遷し、また各要素技術のバージョンやトレンドが移り行く環境下でそのような対応を進めるには、「節約」することが必要です。負債になる部分および負債となってしまっている部分を、できるだけ抑制できる体制を仕組みの面で作り上げなくてはなりません。今後開発チームとしては、引き続き本記事のような改善活動、開発プロセスの整備と共にプロダクトの再構築や改修の検討、実装を推進して行きます。そのためには当然マンパワーも必要になります。いうわけで奥付で恐縮ではありますが、弊社のサービスや、これらの活動に興味を持っていただける方がおられましたら、是非お気軽に、下のバナーやwantedlyよりご応募いただければと思います。〜リリースツールをごっそり置き換えた話〜Tweet関連記事2017-11-15アスタミューゼの開発組織と採用に関するQAアレコレこんにちは。並河(@namikawa)です。今週ブログを担当するnishikawaです。早いもの...2017-10-25技術的負債と戦う指標の取り方と改善の仕方、そして諦め方どうも、えいやです。今回は技術的負債と戦う話をしています。...2017-07-26家事・育児をエンジニアっぽくやってみるこんにちは、nishikawaです。今日は家事・育児の話です。技術ブ...2017-06-21うわっ・・・先月のコスト、低すぎ・・・?Hadoopクラスタのクラウド移行とSparkオンデマンド福田です。Labとは、アスタミューゼのエンジニアとデザイナーのブログです。アスタミューゼの事業・サービスを支えている知識と舞台裏の今をブログとTwitterで発信しています。@astamuseLabアスタミューゼで働きませんか?アスタミューゼでは現在エンジニア、デザイナーを募集中です。興味のある方はぜひご応募ください。(1)@astamuseLabさんのツイートastamuseサービスサイトastamuse世界中のinnovatorのために、創造活動を可視化し未来を創るためのプラットフォームです。活用や新規事業に役立つ様々な機能を提供します。ビッグデータ分析から情報提供し、あなたの知らない未来を発見するメディアです。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。