400万人が利用する会社訪問アプリ
株式会社dinii / Platform Team
受託会社 -> Eコマース -> ファッションテック
アナリストが作成したSQLを一括で管理するrepositoryがあり、各々SQLの記載方法が異なっていた。 これを解決するためにgithub actionとsqlfluffを用いてCIを実装した。 具体的にはPRが上がるとgithub actionが実行され、sqlfluffのフォーマットを自動で実行し、差分を該当のbranchにpushする仕組み。
スプレットシートで管理されているrawデータを、Datalakeへ取り込むためのプログラムの新規作成を行った。 特定のシートのセルからデータを取るために、spread sheetのAPIを叩く。 その後BigQueryの型に合わせるためキャストなどを行い、BigqQueryに入れる。 前任者が作成した類似物があったが、イメージ内部にクラウドの認証情報を持つ作りになっており、コンテナ利用も簡素なものとなっていた。 そのため今回はdocker-compioseを用いたり、必要なバイナリのみをイメージに含めることで、コンテナ周りのナレッジを組織に共有した。 以前はJenkinsを用いてバッチ処理を実現していたが、可能な限りパブリックな空間にデプロイした方が運用や保守が楽になるので、クラウドサービスを用いてcron処理を実現するよう提案した。 それによりアプリケーションサーバとして起動させる要件が必要になったため、APIを立てるコマンドと即時に実行するコマンドの2つのエントリポイントを実装した。 BigQueryなどのライブラリを考慮して、利用したアプリケーション言語はgolangを選定した。
Datalake取り込みプログラムのCI/CDパイプラインがなかったので設計・実装した。 cloudbuildの利用実績があるとのことなので、可能な限りcloud buildで実行するようなパイプラインを構築した。 まずdevelopへmergeされるとcloud buildが実行され、イメージのbuildを行いタグをつけてgcrへpushする。その後developのcloud runへデプロイする。 developからmasterへmergeされると、別のcloud buildが実行され該当のタグをpullし、productionのcloud runへデプロイする。 masterへのmerge時はコンテナイメージのbuildをせず、developにリリースされてるタグに張り替えることでdevelop完全に同じものをproductionにリリースできる。
2021/8月から本プロダクトにおけるリードエンジニアを担当。 開発よりもスプリントの進捗管理、biz側との調整、工数見積もりが主な業務となる。 スプリント管理はJIRAを用いており、大まかな進め方としては以下の通り。 --- 1. biz側にエピックを作ってやりたいことを記載してもらう。これには全社都合の案件などが含まれる。 2. エピックを実現するために必要な詳細を記載する。その詳細に基づいてタスクを作成し、各タスクのポイント、担当領域、担当者を決める。 3. ベロシティを元に全てのタスクをスプリントへ入れる。 4. 全タスクの合計ポイントを算出する。スプリントと合計ポイントを根拠に概算で見積もりをbiz側へ伝える。 5. スプリントに基づいて他メンバには開発をしてもらう。第一言語が英語のメンバもいるため、基本的にはstand up前にslackで簡単な進捗報告を聞く。stand upではJIRAのboardを参照して進捗管理をする。 6. デプロイサイクルは週一でリリースをしている。週末にstaging環境へリリースし、週明けにbiz確認後にproductionへ反映。これもエピックやReleasesなどの機能を使って管理している。 ---
2021/3月にリリースした生産管理システムの機能・マスタデータ追加や運用を行っている。 機能としてはcsv出力の実装、他システムへのデータ連携、注文連携APIのprivate化などを実施した。 データ追加としては、ECサイトで商品が追加されるたびに、本プロダクトにもマスタデータを追加する必要がありmigrationファイルの作成を行った。 日々のアラートはsentryを用いており、slack通知をしてアプリケーションエラーを都度確認するような仕組みにしている。 アラートが発砲されるたびに自分が確認し、場合によってはコード修正を行う。 またマイクロサービスなので、他サービス起因のエラーの場合はそのプロダクトへ報告している。
ワールドグループに所属するブランドである、Original Stichの生産管理を行うシステムを構築した。 Original Stich はユーザがカスタマイズ可能な商品を主力にしており、注文毎に商品を作成するビジネスとなっている。(オーダーメイド) そのため注文商品毎に利用する生地や、仕立てが異なっておりそれらを一元管理出来るシステムを構築した。 主な担当領域はバックエンドAPI開発とインフラ環境構築。 利用技術は以下の通り - golang - MySQL - k8s - terraform - GCP - React - Vercel
モール型EC事業を行っており事業に対する営業効果や、広告効果、KDDIによる各種施策の効果測定などを行うためのDMP基盤の構築&運用を担当している。
部署変更などにより、新規システムの開発が禁止された。 またデータ基盤も別部署が外注を用いて作成し、プロダクト開発に関わるデータはそちらで賄うようになった。 ここからはビジネスサイドの企画やキャンペーンの効果測定に用いるようなデータの取り込みや、毎日のワークフローの運用作業が主となる。 また上述した別部署に対してクラウド環境のナレッジ共有や、自チームに所属することとなったアナリストの方へのナレッジ共有を行った。 (githubの使い方など) この辺りから訪問分析も行うようになり、Adobe AnalyticsやGoogle Analyticsのデータを取り込み始めた。 またTableauやdata portalを用いたダッシュボードの作成をし、他所官へ展開をした。 - Tableau - GA - AA - data portal
この頃からDWH構築をしているチームに参画し、Datalakeに保存しているデータを、日次でDWHが利用できるようにするのがゴールとして求められた。 DWHはGCPのBigQueryを用いており、BigQueryにデータを取り込む仕組みはCloud Composerを用いて既に構築済みのため、s3からgcsへ転送するワークフローを新規で開発した。 全てのワークフローは監視のためslack通知を実装しており、毎朝それを見ることで運用の負荷を下げるようにした。 またワークフローはイベント駆動によってGCPと連携するようにしたため、バッチ処理が落ちていたとしても、簡単にリカバリできるような仕組みにした。 インフラのIaaC化もこの頃から進めており、全てのクラウドリソースはTerraformで再構築している。 - AWS - StepFunction - ECS, Fargate - Lambda - GCP - cloud function - pubsub - cloud composer - BigQuery - OSS - Terraform - golang - node.js
【概要】 プロジェクトメンバ管理システムの追加開発 【作業内容】 ・追加要望に対するプログラム設計、またそれに伴う実装 ・UT観点作成、UTテストケース作成、UT実施 【担当フェーズ】 設計 開発 テスト 【開発環境】 OS:Windows 言語:node.js, vue.js DB:DynamoDB その他: Kintone、gusuku、AWS(Lambda,DynamoDB,APIGateWay,CloudWatch)、git
【概要】 多言語音声合成システムの新規開発 【作業内容】 ・WebAPIに関する仕様書作成 ・多言語音声合成システムのサーバサイド新規実装を担当。RESTFulなAPIサーバを実装。 ・単体テストコード作成。 ・システム試験項目書作成。 【担当フェーズ】 詳細設計 開発 品質管理 テスト(単体、結合) OS:Windows 言語:Java FW:Play2.5, Ebean DB:MySQL 5.7 その他:svn, Eclipse