こんにちは、Da Vinci Studio サーバー部の黒澤です。 サーバー部のことをたくさんの人に知ってもらいたく発信していくことにしたので、Da Vinci Studio サーバー部はどんな構成なのか、どんな技術で開発しているのか紹介したいと思います。
サーバー部とは
まず初めに、Da Vinci Studioの立ち位置から説明します。 Da Vinci Studioの業務は大きく分けて3つです。
- くふうカンパニーグループ企業への技術支援
- グループ外企業のサービス開発
- Da Vinci Studio内の自社サービス開発
グループ企業への技術支援は、各社サービスのみんなのウェディングやオウチーノ、ヨムーノなどの開発を行なっています。 グループ企業はメディア系のサービス開発が多いため、グループ外企業のサービス開発では、水族館のサイト及びチケットシステム、飲食店で使われるモバイルオーダーシステムなど、グループ内で取り扱わない種類の開発に挑戦しています。 自社サービスはKotorというRSSリーダーや、くふうグループで利用するドキュメントツールや音声通話ツールを作成しています。
開発例
o-uccino.com www.sevensignatures.com anymarry.mwed.jp www.mwed.jp zaim.net www.o-uccino.jp remotework-kufu.com oyako-kufu.com
apps.apple.comチーム体制
サーバー部はこれらのサービス開発で実装を行なっている部署です。 2022年3月現在、サーバー部の中には3〜5人の3つのチームが存在し、そのチームで各プロジェクトを担当しています。 プロジェクトを行う時はこのチームにデザイン部とSRE部のメンバーが加わり、プロジェクトチームが出来上がります。
サーバー部のメンバー
人数
13人 Da Vinci Studioの中では一番人数の多い部署です。
男女比
男性10人 女性3人
エンジニアの経験年数
11年以上 2人 、6~10年 3人、 4~5年 3人、 3年以下 5人、 新卒1人で、多くが20~30代です。
担当しているプロジェクトの進め方
サーバー部内のチームごとに大まかに開発を担当する会社が分けられています。 グループ企業の開発が多いチーム、外部企業の開発が多いチームなど。 また複数の企業のプロジェクトが並行して進行しているため、それぞれのメンバーもバランスは違えど2~3つのプロジェクトを担当している人が多いです。 並行して進行しているプロジェクトは、メインの開発プロジェクトと過去に開発したプロジェクトの保守や次のプロジェクトの準備などバランスを取っています。
多くの場合はサーバー部内のチームごとにプロジェクトを担当していますが、プロジェクトの規模や期間によっては他チームとの混成チームを作成してプロジェクトに取り組むこともあります。 2022年3月現在、私も混成チームでプロジェクトに取り組んでおり、チーム構成は臨機応変に対応しています。
サーバー部の技術スタック
サーバー部のエンジニアの多くは、グループ会社のみんなのウェディング(現エニマリ)やオウチーノ出身のエンジニアが多いため、技術スタックも引き継いでいます。 どちらの会社もRuby on Railsで開発されていたサービスなので、今のDa Vinci Studioでも開発されるサービスは新規開発も含めて多くがRuby on Railsで作られています。
多くのプロジェクトで使われている技術は - サーバーサイドはRuby on Rails - フロントはhamlとscssとバニラのJavaScript(Reactも増加中) - DBはMySQLかPostgreSQL
私が所属していたみんなのウェディングでは、新卒のエンジニアを多く採用しており、彼らの育成を行ないながら開発を行う必要があったことから、シンプルなRuby on Railsの構成になっていました。 Da Vinci Studioでも基本的な構成は変わらなかったため、シンプルで学習コストは低いというメリットはあったものの、新しい技術トレンドを追いづらいことや、各サービスがモノリシックにできていることからライブラリの更新等のメンテナンスに課題があるといったデメリットも見えてくるようになりました。
サーバー部の今後の展望
エンジニアメンバーが様々な経験を積んできたことにより、技術スタックの更新の余地が出てきたため、少しずつではありますがサーバー部で以下のの技術を取り入れていきたいと考えています。
React
すでにいくつかのサービスではフロントにReactを導入しているサービスがありますが、今後利用を増やして経験値を貯めていきたいと考えています。 今までのDa Vinci Studioで開発するプロジェクトはメディア系のサービスが多く、フロントの表現についてはあまりリッチなものが求められることが少なかったため、バニラのJavaScriptで事足りることが多く他の選択肢をあまり取っていませんでした。 その中で外部企業のプロジェクトにも開発するようになり始め、メディア以外のサービスの開発も行うようになり、少しずつフロントの要件も複雑化してきたためReactを使うプロジェクトも増え始めました。
マイクロサービス
各社のサービスをそれぞれRuby on Railsでモノリシックなアプリケーションとして開発しているので、同じ機能でも各リポジトリで個別に実装されていました。 個別の実装で工数がかかることはもちろんですし、機能によっては利用されるマスターデータの更新やライブラリの更新も個別に行う必要がありました。 そこで複数のサービスで利用できそうな機能はマイクロサービスとして切り出し、APIとして各サービスに提供するようにしていこうと考えています。 小さく実装できるものから取り組んでおり、現在はAmazon API GatewayとAWS Lambdaでサーバーレスアプリケーションとして実装を進めています。
さいごに
今回は今のサーバー部はどのような構成でプロジェクトの開発をしており、技術面では今後どの様な方向に進んでいこうと考えているか紹介しました。
また、Da Vinci Studioデザイン部が発信するnoteやサービスの開発ストーリーもあるので、こちらも読んでみてください。
Da Vinci Studio では一緒に働ける仲間を絶賛募集中です。 興味のある方は こちら か recruit@da-vinci-studio.net までご連絡ください。