タグ

ブックマーク / tech.classi.jp (21)

  • GitHub Actions と Release Please を使ったアプリケーションのリリース自動化 - Classi開発者ブログ

    GitHub Actions と Release Please を使ったアプリケーションのリリース自動化 こんにちは @lacolaco です。最近は、先日プレスリリースが出された「学習トレーニング」機能を裏で支えているコンテンツ管理システム(以下内部CMS)の開発に携わっています。 corp.classi.jp この記事では、内部CMSのフロントエンドAngular アプリケーション)のリリースフローを自動化している仕組みを紹介します。現在のリリースフローの全体像は次の図のようになっています。この中にある Release Please というのが、今回特に紹介したいツールです。いくつか日語でのブログ記事などもあるので特にマイナーというわけではないと思いますが、多くの場合はライブラリのリリースに使われています。一方、アプリケーションのリリースで使っているケースはあまり発信されてないよう

    GitHub Actions と Release Please を使ったアプリケーションのリリース自動化 - Classi開発者ブログ
  • 停滞した開発者ブログを復活させるまで - Classi開発者ブログ

    こんにちは、サーバサイドエンジニアのid:aerealです。 この記事ではClassi開発者ブログ (以後、開発者ブログ) の編集長としてClassi開発者ブログが再始動するまで・再始動してからおよそ半年の振り返りを通して企業の技術ブログ運営の裏側についてお伝えしたいと思います。 開発者ブログ再始動の経緯 Classi開発者ブログの目指すところ 編集部の運営 半年間の振り返り 編集部の振り返り むすび 開発者ブログ再始動の経緯 Classi開発者ブログは2020年3月の新型コロナウイルスの影響で全国の学校が休校になってどうなったか - Classi開発者ブログを境に2020年10月のClassiで発生した2つの問題を繰り返さないために我々が取り組んでいること - Classi開発者ブログまで記事の投稿がありませんでした。 これはご利用いただいているお客様への情報発信と歩調を揃える必要があり

    停滞した開発者ブログを復活させるまで - Classi開発者ブログ
  • ISUCON12予選 スコア4位相当でしたが失格になりました - Classi開発者ブログ

    TL;DR こんにちは。Classi開発部のminhquang4334です。 今年は開発支援部のhenchiyb先輩と一緒に 2回目でyasuoチームとして ISUCON12の予選に参加しました (参考: 1回目で参加したブログ)。 最終結果は予選通過スコアを超えて、 4位/700チーム相当でしたが、SecurityGroupの TCP:8080 ポートがオープンされていたため、レギュレーションに引っ掛かって失敗しました。 以下のチームは予選通過スコアを記録していましたが、追試において失格となっています。 yasuo 環境チェックにおいて、SecurityGroupの TCP:8080 ポートがオープンされていた このブログでは積極的に自分の感想やチームがやったことを共有したいと思っています。 全体的な感想 正直、悲しい気持ち半分、嬉しい気持ち半分で戸惑っています。予選の実施前には、ここま

    ISUCON12予選 スコア4位相当でしたが失格になりました - Classi開発者ブログ
  • データ基盤の品質向上への取り組み - Classi開発者ブログ

    こんにちは、データエンジニアの石井です。 先日公開した記事「社内向けのデータ基盤から集計結果をReverse ETLしてサービスに組み込んだ話」で、ダッシュボード機能のリリースにより、Classiのデータ基盤が「社内用データ基盤」から「ユーザー影響あるシステムの一部」へ進化した話をしました。「ユーザー影響あるシステムの一部」への進化に伴い、データ基盤の品質担保は必要不可欠です。今回は、データ基盤の品質向上に取り組んだKANTプロジェクトについてご紹介します。 KANTプロジェクト 背景・課題 Classiのデータ基盤がユーザー影響あるシステムの一部になる前、つまり社内用データ基盤だった頃には以下のような課題がありました。 データ基盤の状態把握 マルチクラウドにおけるデータ基盤全体の状態把握ができていなかった データ基盤の実行状態(SUCCESS, FAIL, RUNNINGなど)の把握が、

    データ基盤の品質向上への取り組み - Classi開発者ブログ
  • チームトポロジーを参考に新組織の編成を考えた話 - Classi開発者ブログ

    みなさん、こんにちは。開発部で部長をしている徹郎(id:tetsuro-ito)です。 Classiでは今年度より組織のあり方を少し見直し、チームトポロジーの考え方も導入してみたので、今回はその過程の話を紹介します。 Classiのこれまでの組織 Classiでは、2020年に起こしてしまったセキュリティインシデントおよび高負荷障害の対策を全社でとるべく、組織のあり方を変えていました。 7月からは、動作しているすべてのコードに対して、チームの責任範囲を明確にしました。また、技術的な課題をそれぞれのチームの責任において改善するような動き方にも変えました。やるべきことが明確(「再建プロジェクト」と「セキュリティ強化」が最優先)で、かつ、チームが主体となって意思決定する形にしたことで、現在は各チームが担当する機能やリポジトリをしっかりとメンテナンスしていく、そんな体制になってきたと思います。

    チームトポロジーを参考に新組織の編成を考えた話 - Classi開発者ブログ
  • Content Security Policy のレポートを収集するためにやったこと - Classi開発者ブログ

    はじめに こんにちは、開発部所属エンジニアの id:kiryuanzu です。 現在、Classi ではサービスのセキュリティリスクをできる限りなくすために Content Security Policy を導入して脆弱性を検知する仕組みの導入を進めています。 記事ではこの仕組みを導入する上でどのような手順が必要であり、どのような箇所で苦戦するポイントがあったかについて紹介していきます。 筆者は今まで CSP対応に携わったことがなかったのですが、導入段階の時点で想定していたよりも様々な知識が必要なことがわかり、記事にしたいと思いました。 もし数ヶ月前の自分と同じように初めてCSP対応に関わる人の一助となれば幸いです。 Content Security Policy (通称: CSP) って何? Content Security Policy とは、HTTPヘッダの種類の1つであり、クロ

    Content Security Policy のレポートを収集するためにやったこと - Classi開発者ブログ
  • Classiの技術選定に対するスタンス - Classi開発者ブログ

    VPoTの丸山です。日はClassiがいまのところどういうスタンスで技術選定に臨んでいるのかについてお話しします。これは「いまのところ」のスタンスであり、未来永劫このようなスタンスでいくかどうかというのは定かではありませんが、考え方のひとつとして参考になれば幸いです。 技術選定にハードリミットはかけない 結論から言うと、Classiでは「この技術スタックを必ず使ってください」という制限はかけていませんし、かけるつもりもいまのところありません。その理由は大きくふたつあります。 ひとつは、組織全体の視点でみた時に、技術スタックに関する健全な新陳代謝の機会を奪わないため、もうひとつは、メンバーレベルの視点でみても、複数の技術に触れる機会が成長につながるからです。 新陳代謝を行う機会を奪わない、というのは、どういうことでしょうか。 ひとつの技術スタックを極めていくことにも良い点はあります。ノウハ

    Classiの技術選定に対するスタンス - Classi開発者ブログ
  • Datadogで深夜バッチの失敗アラートを営業時間に受け取る方法 - Classi開発者ブログ

    深夜の定期バッチの監視 Webサービスのオフピーク時に重たい処理を実行させるというのは一般的なプラクティスといえます。 特に深夜〜早朝は多くのサービスでバッチ処理を実行させているのではないでしょうか。 Webサービスだけではなく、当然バッチ処理も監視して失敗したらそれを発見し対処したいです。 しかし、失敗を発見しても即座にユーザ影響がないので対応は後でも良いという場合、素朴に監視ルールを作るとバッチが失敗した深夜・早朝にアラートが発報されることになります。 発報されたアラートを見て「これは今すぐに対応してなくても良いな」と判断するのであれば、それは狼少年アラートといえるのではないでしょうか。 悪貨が良貨を駆逐すると言われるように、狼少年アラートがはびこれば良貨のアラートもいずれ無視されるようになってしまうことは容易に想像できます。 Datadogの timeshift 関数でアラートの発報

    Datadogで深夜バッチの失敗アラートを営業時間に受け取る方法 - Classi開発者ブログ
  • DatadogでECS Fargate TaskのCPU利用率が100%を超えて表示されていたので調べてみた - Classi開発者ブログ

    こんにちは。開発部の遠藤です。 ClassiではAmazon ECSをアプリケーション実行環境として利用しています。 ECSの各種メトリクスをDatadogを使ってモニタリングしながら、日々安定稼働しているかどうかをチェックしています。 そのうちの一つの重要なメトリクスとして、ECSのFargate TaskのCPU利用率が過度に高まっていないか、があるのですが、ある時期、CPU利用率が100%を超えてしまっていて「一体なにが起きてるんだ??」と疑問を持ちました。 今回はそれについて深堀りしてみたので、ニッチなトピックですが紹介したいと思います。 ECS Fargate TaskのCPU利用率が100%を超えて表示されている こちらが実際にCPU利用率が100%を超えてしまったときのグラフです。 Datadogのメトリクスは ecs.fargate.cpu.percent です。なお、c

    DatadogでECS Fargate TaskのCPU利用率が100%を超えて表示されていたので調べてみた - Classi開発者ブログ
  • Mock Service WorkerでAPIをモックして開発をスムーズに進められた話 - Classi開発者ブログ

    こんにちは。開発部 認証連携チームでエンジニアをしている id:ruru8net です。前回はこちらの記事を書かせていただきました。 tech.classi.jp 現在は認証基盤再建というプロジェクトの中で、主にフロントエンド開発を担当しています。この記事ではフロントエンド開発においてAPIのモックのために「Mock Service Worker」を使ったところスムーズに開発を進めることができたので、使い方を紹介したいと思います。 mswjs.io ツールの導入 弊社ではフロントエンドのフレームワークにAngularを採用しているのでAngularでの導入手順を記します。 基的にはドキュメントの手順通りです。 1. インストール $ npm install msw --save-dev # or $ yarn add msw --dev 2. モックを定義 src/mocks/hand

    Mock Service WorkerでAPIをモックして開発をスムーズに進められた話 - Classi開発者ブログ
  • 開発メンバーの保守運用スキルを上げるため実施している朝当番制度の紹介 - Classi開発者ブログ

    こんにちは、開発支援部基盤インフラチームの kenryooo です。 Classiでは過去の高負荷によるアクセス障害での反省を踏まえ、エンジニア向けに保守運用スキルを高める施策として、朝当番という制度を運用しています。今回はその紹介をします。 目的 朝当番制度は、下記を目的に運用しています。 Classiのピークタイム(毎朝8:00 - 9:30)に問題が起きた場合、社内向けにスムーズな情報連携を行う サービス品質の継続的な改善 パフォーマンスや監視内容に異常があった場合や、依存している外部接続システムやSaaSのメンテナンス情報などを担当チームへ共有する 担当エンジニアの育成 Classiシステムの全体像の理解 担当外のアプリケーション(リポジトリ)の理解 システム監視の入門(Datadog) インシデントハンドリングの入門 背景と課題 朝当番制度は、下記の背景と課題感からスタートしてい

    開発メンバーの保守運用スキルを上げるため実施している朝当番制度の紹介 - Classi開発者ブログ
  • トピックモデルを使って問い合わせ内容を分析した話 - Classi開発者ブログ

    この記事はClassi developers Advent Calendar 2021の18日目の記事です。 昨日は基盤インフラチームのめるさんによる「バックエンドエンジニアが基盤インフラチームに異動して半年ほど経った話」でした。 こんにちは、データAI部でデータサイエンティストをしている高木です。 弊社では顧客である先生、生徒、保護者からClassiの機能や契約に関する問い合わせを日々頂いております。 これらの問い合わせの内容を分析し、Classiの現状の課題や今後解決していくための施策などを社内で検討しています。 今回は問い合わせ内容を言語処理技術の一つであるトピックモデルを使って分析した内容についてご紹介します。 なぜ分析する必要があったのか? Classiへの問い合わせやその対応の内容は、担当者によってテキスト化された状態で管理されています。 弊社のカスタマーサポート・カスタマーサ

    トピックモデルを使って問い合わせ内容を分析した話 - Classi開発者ブログ
  • Airflowの処理の一部をdbtに移行しようとして断念した話 - Classi開発者ブログ

    こんにちは、データプラットフォームチームでデータエンジニアをやっている滑川(@tomoyanamekawa)です。 以前紹介したデータ分析基盤であるソクラテスの改善のためにCloud Composer(Airflow)で行っている処理のdbtへの置き換えを検討しましたが、導入を見送りました。 調べてみてdbtに対するわかりみも深まったので、その供養のために検討内容を公開します。 同じように検討している方の参考になれば幸いです。 dbtとは DWH(Data Ware House)でのquery管理やデータの品質、データリネージの問題を解決してくれるツールです。 すでに先人たちがいろいろな記事を公開してくれているので、詳細は説明しませんがこちらの文がdbtをよく表しています。 ELTの「T」を担当するツール データの前処理における作業をELT(Extract、Load、Transform)と

    Airflowの処理の一部をdbtに移行しようとして断念した話 - Classi開発者ブログ
  • 当たり前にリリースしていく ~ 新卒研修編 - Classi開発者ブログ

    当たり前にリリースしていく ~ 新卒研修編 開発支援部基盤バックエンドチームのみんなの頼れるお兄さん id:Soudai です。Classiでは例年新卒採用を行っており、新卒研修の一環として今年からそーだい塾を行いました。当日の資料はこちらです。 この記事では当日の資料にはない部分で、研修中に触れた内容について解説していきます。 YAGNIを言い訳に使わない 研修中の最初の質問は「変更に対する可用性をどこまで許容しますか?」でした。 質問を噛み砕くと どこまで設計にこだわりますか? という質問でもありました。結論としてはYAGNIを言い訳に使わず、最大限考え抜くべきとした上で私なりのアドバイスをしました。 いつ設計を諦めるか 最初から最高の設計が思いつけば問題はありません。しかし、考えがまとまらないときにどこまで考え抜くかは悩ましい問題です。 そこでアドバイスとして次の2つをしました。 先

    当たり前にリリースしていく ~ 新卒研修編 - Classi開発者ブログ
  • 2021年度新卒研修の一環としてそーだい塾に参加しました - Classi開発者ブログ

    2021年度4月に Classi に入社しエンジニアをしています、北村です。 先日新卒研修の一環としてそーだいさんによるそーだい塾に参加しました。今回はそーだい塾の当日の様子や学んだ内容を振り返りつつ、参加レポートを書きたいと思います。 そーだい塾とは そーだい塾はそーだいさんが講師を務める勉強会の通称です。 Classi では今年度から、新卒研修の一環としてそーだい塾が開かれることになりました。今回はその記念すべき第一回目でした。 そーだい塾については、すでにそーだいさんご人が書いてくださった記事もあるので合わせてご覧ください。 当日 今回のそーだい塾は一部と二部の計二回、二日間の日程で行われました。 資料 第一部資料 第二部資料 様子 当日は両日とも zoom ミーティングで行われました。 前半45分がそーだいさんによる講義タイム、後半45分が質疑応答タイムとして進められました。 (

    2021年度新卒研修の一環としてそーだい塾に参加しました - Classi開発者ブログ
  • Sentryを活用するためにやっていること - Classi開発者ブログ

    フロントエンドエキスパートチームのlacolacoです。 この記事ではアプリケーション監視プラットフォームのSentryをClassiの中でどのように活用しているかを少し紹介します。Sentryの運用に悩んでいる方の参考になれば幸いです。 Sentryの用途 Classiでは大きく2つの目的でSentryを利用しています。ひとつはアプリケーションのエラーの監視(以後エラー監視と呼びます)、もうひとつはWebフロントエンドのパフォーマンスの監視(以後パフォーマンス監視と呼びます)です。 Sentryは多くのプログラミング言語用にSDKがあり、Classiでは主にJavaScriptRubyのSDKを利用してフロントエンド・バックエンド両方のエラー監視を行っています。パフォーマンス監視は最近利用しはじめたのですが、バックエンドではもともとDatadogによる監視をしていたので、Sentry

    Sentryを活用するためにやっていること - Classi開発者ブログ
  • SQL勉強会を通して痛感したデータ民主化への長い道のり - Classi開発者ブログ

    こんにちは、ClassiデータAI部の石井です。 私は2019年4月にソフトバンクからClassiに出向し、マーケティング部を経て、現在データAI部でデータエンジニアとして分析基盤の構築を担当しています。今回は私が現部署で最初に担当したSQL勉強会についてご紹介します。 背景 2020年春頃から、新型コロナウイルスの影響による休校や教育現場の急激な状況変化に対応するため、Classiサービスの詳細な利用状況把握の必要性が高まっています。 Classiは弊社の強みともいえる膨大な教育データを蓄積していますが、残念なことに全社的には貴重な教育データを活用しきれていないことが課題でした。 2020年夏に全社で行った「データAI部に期待すること」に関するアンケートでも、「基礎的なデータ活用方法を教えてほしい」という回答が多く寄せられました。 この状況をふまえ、データ活用のための知識の底上げを行い、

    SQL勉強会を通して痛感したデータ民主化への長い道のり - Classi開発者ブログ
  • dron: クラウドネイティブなcron代替の紹介 - Classi開発者ブログ

    みなさん、こんにちはこんばんは。Classiの基盤バックエンドチームでプロダクトや機能を越えてサーバサイドを中心に困り事を手広く解決する仕事をしているid:aerealです。 今回の記事ではClassiのパフォーマンス改善のため取り組んでいるdronと呼ばれるクラウドネイティブなcron代替 (Cloud Native Cron Alternative) の開発について、運用を見据えてどのような考慮を重ねたのかを紹介します。 背景と課題 現行のワークロード 課題 DBにやさしくない スケールアウトの困難なアーキテクチャ 方針 設計 コンポーネント概説 Facade Job Executor Job Scheduler Endpoint Data Job Data Job Reservation Worker Kicker Worker Endpoint 運用時の考慮事項 追跡・トレーシング

    dron: クラウドネイティブなcron代替の紹介 - Classi開発者ブログ
  • Classiにフロントエンドエキスパートチームを作った話 - Classi開発者ブログ

    こんにちは、Classiに入社して1年になるGoogle Developers Expert for Angularのlacolacoです。 今日はClassiに新しく フロントエンドエキスパートチーム を作った話を紹介します。 フロントエンドエキスパートチームとは? 日フロントエンド界隈(?)の方なら、フロントエンドエキスパートチームと聞いて真っ先に思い浮かぶのはサイボウズさんのチームだと思います。 Classiで新たに立ち上げたチームは、名前も含めてサイボウズさんのフロントエンドエキスパートチームをかなり強くインスパイアしています。 そのメンバーであり友人でもあるsakito君にはチームの設計にあたって相談に乗ってもらい、名前をそのまま真似ることも快諾してくれました。この場を借りて改めて感謝です! speakerdeck.com メンバー構成 2021年1月現在、lacolaco

    Classiにフロントエンドエキスパートチームを作った話 - Classi開発者ブログ
  • セキュリティインシデントと大規模障害を経てClassiは開発組織をどう変化させたのか - Classi開発者ブログ

    こんにちは、元テックリード、この10月からVPoT(Vice President of Technology)に就任した、Classiの丸山(id:nkgt_chkonk)です。 前回の記事では、前CTO(現VPoE=Vice President of Engineer)の佐々木が「Classiで発生した2つの問題を繰り返さないために我々が取り組んでいること」というタイトルで、社内体制を変更したことをお伝えしました。 今回はわたしから、組織体制の変更の背景や、現在どのような体制で、どのような課題に取り組んでいるのかをさらに詳しくお伝えしたいと思います。 4月~5月にかけての2つの問題の原因となった「甘え」 前回の記事でお伝えしたとおり、2020年の4月〜5月にかけて、Classiは外部の攻撃者による不正アクセスおよびデータの漏洩という大きなセキュリティインシデントと、アクセス増による大規模

    セキュリティインシデントと大規模障害を経てClassiは開発組織をどう変化させたのか - Classi開発者ブログ