タグ

ブックマーク / tech.studyplus.co.jp (20)

  • Amazon EKSクラスタ上で動作するSidekiqをGraceful Shutdownさせる - Studyplus Engineering Blog

    こんにちは。スタディプラスのSREグループの水口です。 2022年5月に入社してからStudyplus Engineering Podcastには何度か出演しておりましたが、テックブログは今回初めて書きます。 この記事では、SidekiqをKubernetes(Amazon EKS)で動作させる際、Graceful Shutdownさせるために必要な前提知識を整理します。 背景 Sidekiqプロセスの停止 SIGTERM + timeout オプション Kubernets Podの停止 Deploymentのマニフェストについて terminationGracePeriodSecondsについて Kubernetes Nodeの停止 Cluster Autoscaler について Amazon EC2 スポットインスタンス について 【参考】既存実装について おわりに 【宣伝】Podca

    Amazon EKSクラスタ上で動作するSidekiqをGraceful Shutdownさせる - Studyplus Engineering Blog
    invent
    invent 2024/02/06
  • スタディプラスを支えるインフラ技術(2021年) - Studyplus Engineering Blog

    スタディプラスでSREをしてます、ksugaです。 最近は寒くて、電気毛布が欠かせません。寝るとき足元に電気毛布を敷いて寝ると睡眠が深く、疲れが取れます。 毎年恒例になっている「スタディプラスを支えるインフラ技術」を書いていたら公開が年明けになってしまいました。振り返りも兼ねて2021年に何していたかブログを書いたので良ければご一読ください。 昨年までの記事はこちらです。 tech.studyplus.co.jp tech.studyplus.co.jp はじめに システム構成 セキュリティ 利用中の主なAWSリソース 構成管理 CI/CD 監視・検知 その他 最後に はじめに 弊社には大きく分けて以下3つのサービスがあります。 学習管理SNS「Studyplus」 教育機関向け学習管理サービス「Studyplus for School」 参考書読み放題アプリ「ポルト」 今回も「Study

    スタディプラスを支えるインフラ技術(2021年) - Studyplus Engineering Blog
    invent
    invent 2022/10/19
  • スタディプラスのポストモーテム文化 - Studyplus Engineering Blog

    お久しぶりです。SREグループの菅原です。 おすすめのアイスはオハヨー乳業のBRULEEです。夏場は1日にアイスをいくつもべてしまいました。もう末期ですね。 弊社ではポストモーテムをバックエンド(サーバーサイド+SRE)で運用して3年経ちました。2019年のSREチームを立ち上げ直後から導入しており、そこで作った運用ルールを基に現在も引き続き運用しております。今回は弊社のポストモーテムについて詳しくご紹介します。 目次 ポストモーテム導入で何を解決したかったのか? 障害対応のドキュメントが単なる作業証跡だった 障害対応を率先して行うメンバーに偏りがあった システムの理解度に差が生まれがちだった ポストモーテムの布教 ポストモーテムのルール作成 ポストモーテムを書くべきインシデントの基準 ポストモーテムのレビュー ポストモーテムの運用 ポストモーテムの担当者 ポストモーテムの実施タイミング

    スタディプラスのポストモーテム文化 - Studyplus Engineering Blog
    invent
    invent 2022/10/19
  • Sidekiq Enterpriseの同時実行数制御を理解する - Studyplus Engineering Blog

    こんにちは。サーバーサイドグループの山田です。 最近クロスバイクを買って自転車で走ることにはまっています。 弊社ではRailsアプリケーションの非同期処理やバッチ処理でSidekiq/Sidekiq Enterpriseを使用しています。 tech.studyplus.co.jp Sidekiq Enterpirseには便利な機能が多くありますが、今回は Rate limiting の Concurrent について書いていきます。 なぜConcurrentかというと、先日この設定内容が原因で想定外に大量の待機ジョブを発生させてしまったためです。 その失敗を交えて紹介していきます。 TL;DR Rate LimitingのConcurrentを使う場合 ジョブの処理時間に合わせたlock_timeoutを設定する ジョブの処理を修正する場合はlock_timeoutも見直す Sidekiq

    Sidekiq Enterpriseの同時実行数制御を理解する - Studyplus Engineering Blog
    invent
    invent 2022/09/14
  • Studyplus iOSにおけるコードリファクタリングへの取り組み - Studyplus Engineering Blog

    Studyplus iOSにおけるコードリファクタリングへの取り組み こんにちは、Studyplus事業部モバイルクライアントグループの上原です。以前はWidgetの実装についてブログを書きましたが、今回はStudyplus iOSで取り組んでいるコードのリファクタリングについて書きます。 tech.studyplus.co.jp モバイルクライアントグループでは、コードのリファクタリングを積極的に進めており、直近では下記を並行して作業しています。 Objective-CからSwiftへの移行 Codable対応 通信処理の改善 画面遷移処理のCoordinatorパターン準拠対応 Studyplus iOSにおけるコードリファクタリングへの取り組み Objective-CからSwiftへの移行 Manual Layoutで書かれた部分をAuto Layoutに修正 テストの追加 Coda

    Studyplus iOSにおけるコードリファクタリングへの取り組み - Studyplus Engineering Blog
    invent
    invent 2022/06/16
  • Flutter + Firebase FunctionsでZendesk Supportを活用する - Studyplus Engineering Blog

    こんにちは、モバイルクライアントグループの若宮(id:D_R_1009)です。 今年もスギ・ヒノキ花粉は辛かったです。自室でPCを見ている時間が長いこともあり、特に目が辛かった年でした。 今回はPortoで昨年11~12月ごろに対応したZendeskへのCSツール移行について書いてみたいと思います。 play.google.com ポルト(Porto) 参考書が読み放題 Studyplus Inc.教育無料apps.apple.com Zendesk ZendeskFlutterからチケットを作成する Zendesk Plugin Firebase Functions Zendesk APIドキュメントの読み方 リクエスト 終わりに Zendesk Zendeskは多くの企業で採用されているCSツールです。 アプリ内お問い合わせやメールによるお問い合わせ、ヘルプセンターの管理、Googl

    Flutter + Firebase FunctionsでZendesk Supportを活用する - Studyplus Engineering Blog
    invent
    invent 2022/06/16
  • Studyplus iOS/Androidのサブスクリプションをサーバーサイドに実装した話 - Studyplus Engineering Blog

    こんにちは、サーバーグループの中村です。 Horizon Forbidden Westを先日クリアしました! とても面白かったのですが大作オープンワールドゲームをがっつりプレイするのが最近しんどくなってきました。 ですが懲りずにELDEN RINGを買おうか悩んでおります。 (クリアできずに詰んでいるメトロイドドレッドもどうにかしなくてはですが) 今回は1月25日にリリースした、 Studyplus有料版のサーバーサイドを担当した時の話をさせてもらいます。 Studyplus有料版とは 元々Studyplus Proという名前で、サブスクリプションサービスは存在していました。 ですが今回のStudyplusブックがリリースするにあたり、 Studyplus有料版としてコースを増やし拡充することになりました。 拡充にあたりお試し機能の追加などもされており、より便利にお得になっています! お試

    Studyplus iOS/Androidのサブスクリプションをサーバーサイドに実装した話 - Studyplus Engineering Blog
    invent
    invent 2022/06/16
  • seedのベストプラクティス - Studyplus Engineering Blog

    こんにちは、ForSchoolチームでエンジニアをしている島田です。最近の好きな漫画は「白山と三田さん」です。 今回はStudyplus For School(以下FS)のseed運用について説明します。 FSは以下で構成されたSPAです。 サーバーサイド:Ruby on Rails フロントエンドReact.js Railsの環境構築時などで初期データをローカルのDBへ投入する場合に、Railsのseed( $ rails db:seed )を利用している方が多いのではないでしょうか? FSチームでもRailsのseedを利用していたのですが、以下のようなことが発生していました。 モデルが増えたことで seed.rb が肥大化し複雑になっていた テーブルスキーマの定義を変更した場合に、 seed.rb の変更がされない 上記が原因で保守コストが上がり、新規のデータが追加されなくなってい

    seedのベストプラクティス - Studyplus Engineering Blog
    invent
    invent 2022/06/16
  • コンテナビルドを速くするためのテクニック - Studyplus Engineering Blog

    こんにちは! SREの栗山です。 最近観て良かった映画は「コーダ あいのうた」です。 今回は弊社で使っているコンテナビルドを速くするためのテクニックを紹介します。 以下のような一般的なテクニックに関しては他でよく紹介されているので今回は割愛します。 Dockerfileでは変更が少ないものを上に、変更が多いものを下に定義し、キャッシュが効くようにする .dockerignoreをちゃんと定義する マルチステージビルドを活用する bundle installの結果をキャッシュする 弊社のサーバーサイドではRuby on Railsをメインで使っています。 そのためコンテナビルド時にbundle installをする必要がありますが、bundle installはとても時間がかかりますよね。 以下のようにしてしまうとCOPYしたファイルに変更があるたびにキャッシュが使われずbundle ins

    コンテナビルドを速くするためのテクニック - Studyplus Engineering Blog
    invent
    invent 2022/06/16
  • Studyplus iOSアプリにasync/awaitを導入してみた - Studyplus Engineering Blog

    こんにちは、Studyplus事業部モバイルクライアントグループの上原です。 中途入社でiOSエンジニアとして入社して、StudyplusのiOSアプリの開発を主にしています。 また、最近はiOS以外にもFlutterを触り新機能を開発したりしています。 趣味の方では、Apex Legendsを数年やっているのですが、最近愛用していた武器が弱体化&武器生成必須になりモチベーションがどんどん低くなっています。新しい複数人でやれて人口の多いゲームの発売を切実に期待しています。 さて、今回は、Swift 5.5から導入されたasync/awaitをStudyplusのiOSアプリに一部導入したことについて書きます。 docs.swift.org async/await導入以前の非同期コード iOSでは、ネットワーク処理などの時間がかかる処理で、非同期的に動作させるためにクロージャーを呼び出す必要

    Studyplus iOSアプリにasync/awaitを導入してみた - Studyplus Engineering Blog
    invent
    invent 2022/03/07
  • アプリ画面のライフサイクル管理をAppDelegateからSceneDelegateへ移行した話 - Studyplus Engineering Blog

    こんにちは、Studyplus事業部モバイルクライアントグループの明渡です。 最近、当ブログの当番がチーム単位から個人単位へ変更になりました。 ひとまずブログ執筆をご無沙汰していた順に回るのですが、自分は昨年iOSDCのLT登壇内容まとめ記事以来でした。 iOS 13におけるSiri Shortcuts 最小実装+α スライド書き起こしと補足 - Studyplus Engineering Blog 今年も最近リリースした機能をネタにプロポーザルを出してみたので、もし通ったらいろいろ頑張ります。 2021年5月、Studyplus iOS版アプリにて画面のライフサイクル管理をするクラスを移行しました。 具体的には、UIApplicationDelegate準拠のAppDelegateから、UIWindowSceneDelegate準拠のSceneDelegateへ乗り換えました。 Stud

    アプリ画面のライフサイクル管理をAppDelegateからSceneDelegateへ移行した話 - Studyplus Engineering Blog
    invent
    invent 2022/03/04
  • Firebase Functionsのロギングを改善した話 - Studyplus Engineering Blog

    はじめまして、モバイルクライアントグループの市川です。昨年9月からポルトの開発にジョインしました! porto-book.jp ポルトはFlutterとFirebaseで開発しているサービスです。 サーバサイドの処理は全てFirebase Functionsで実装されており、エンドポイントの数は40近くあります。 その中には、課金に関するクリティカルなAPIや外部サービスと連携するAPIなど、問題が起きるとサービスの継続に大きな影響を与えるものも多くあります。 今回はサービスを安定運用するため、Firebase Functionsのロギング改善した話を3つ書こうと思います。 ロガーの変更 と エラーレポーティング ①重大度レベルの反映 ②ロガーの引数が柔軟 参考情報 ログの保持期間の変更 不要ログの排除 除外の設定方法 まとめ ロガーの変更 と エラーレポーティング ポルトのFunctio

    Firebase Functionsのロギングを改善した話 - Studyplus Engineering Blog
    invent
    invent 2021/06/25
  • アプリ内課金の定期購入(サブスクリプション)をFlutterとFirebaseで実装するときのポイント - Studyplus Engineering Blog

    こんにちは、スタディプラスの須藤(id:kurotyann)です。 昨年の9月にFlutterとFirebaseで新規サービス「ポルト Porto」をリリースしました。 tech.studyplus.co.jp ポルトはアプリ内課金を未実装でローンチしました1。ローンチ時の決済手段は、Stripeを使ったWebクレジット決済(月額制で無料トライアル14日間)のみです。 高校生をメインターゲットとしながらもアプリ内課金がないのは大きな課題であったため、今年の2月25日にアプリ内課金をリリースしました。 そこで、今回は「FlutterとFirebaseに焦点をあてて」アプリ内課金の定期購入の実装ポイントを紹介します。 1. 技術選定 システム構成図 まず、システム構成図で全体像を示します。 アプリ内課金(定期購入) 定期購入のステータス変更通知 Flutter(アプリ側) Flutterにはア

    アプリ内課金の定期購入(サブスクリプション)をFlutterとFirebaseで実装するときのポイント - Studyplus Engineering Blog
    invent
    invent 2020/04/13
  • プロジェクト・タスク管理ツールにmonday.comを使い始めたので、いかにmonday.comが最高かを紹介したい - Studyplus Engineering Blog

    こんにちは、スタディプラスの栗山(id:shepherdMaster)です。 みなさんは社内でどんなプロジェクトタスク管理ツールを使ってますでしょうか? 今回はスタディプラスで最近使い始めたプロジェクトタスク管理ツールのmonday.comを紹介したいと思います。 Taskworld時代 社内では以前はTrelloに似たカンバン形式のプロジェクトタスク管理ツールのTaskworldを使っていました。 しかしTaskworldは使い続けていると動作が重くなってきたり、たびたびTaskworldに障害が発生したり、Slackへ簡単に通知連携できなかったり、そもそもツールとして使いづらかったりと不満が上がっていました。 そのため新しいプロジェクトタスク管理ツールを選定することになりました。 新しいプロジェクトタスク管理ツールの選定 社内で新しいプロジェクトタスク管理ツールを選定するた

    プロジェクト・タスク管理ツールにmonday.comを使い始めたので、いかにmonday.comが最高かを紹介したい - Studyplus Engineering Blog
    invent
    invent 2020/04/07
  • 弊社のリモート事情 - Studyplus Engineering Blog

    こんにちは。サーバーサイドエンジニアの金澤です。 コロナウィルスがいまだに猛威を振るっていますが、みなさんはご無事に過ごされているでしょうか。 この奇禍によってリモートワークを余儀なくされている方も多いかと思います。 弊社も例外ではなく、現在はほぼ全ての社員がフルリモートで勤務しています。 以前からリモートワークの導入を進めていたとはいえ、実際に顔を合わせるタイミングがあるのと、それが無いのとでは全く違う働き方が必要なのだなと実感させられています。 事態が収束したら体制がどうなるかというのはまだ未定ですが、我々がどうやってこの状況に対応しているかというお話をさせていただきます。 仕事の進め方 弊チームは一週間単位のスプリントで開発を進めており、スプリントレビュー、レトロスペクティブ、そして次週のプランニングを毎週行なっています。 フルリモートという性質上どうしても顔を合わせる機会は減ってし

    弊社のリモート事情 - Studyplus Engineering Blog
    invent
    invent 2020/04/07
  • Studyplus iOSでライブラリ管理をCocoaPodsからCarthageに移行した件 - Studyplus Engineering Blog

    こんにちは。今年の5月に入社したiOSエンジニアの大石(id:k_oishi)です。 今回は弊社がリリースしているStudyplusのiOSアプリのライブラリ管理をCocoaPodsからCarthageに移行した件をご報告します。 プロジェクトの構成と開発PCのスペック 現在のStudyplus iOSは以下の構成となっています。 開発環境: Xcode 10.3 言語: Swift, Objective-C(割合は86:14) ライブラリ管理: CocoaPods, Carthage CI/CD: fastlane, CircleCI, DeployGate また、私が入社時に希望して用意されたMacBook Proのスペックは以下のとおりです。 気になるライブラリのビルド時間 私が入社した時点でCarthageの導入はされていましたが、Carthageで管理されていたライブラリは一部の

    Studyplus iOSでライブラリ管理をCocoaPodsからCarthageに移行した件 - Studyplus Engineering Blog
    invent
    invent 2019/10/07
  • FlutterとFirebaseで新しいサービスをリリースしました - Studyplus Engineering Blog

    こんにちは、スタディプラスの須藤(id:kurotyann)です。 タイトルどおり、9/17にFlutterとFirebaseで新しいサービスをリリースしました。 サービス名は「ポルト(Porto)」です。 受験生に人気の参考書を月額980円でスマホで読める電子参考書サービスです。 iOSとAndroidで利用でき、無料で読める参考書もあります。受験生でない方も試しにインストールしてみてください。 ポルト 大学受験向けの参考書が読み放題 Studyplus Inc.教育無料apps.apple.com play.google.com 【公式】ポルト 参考書読み放題サービス【14日間無料体験のお申し込みはこちら】 さて、リリースされたばかりのポルトですが、今回のブログでは以下の3点を書きます。 「(1) 技術スタック」 「(2) 開発期間」 「(3) FlutterとFirebaseで開発を

    FlutterとFirebaseで新しいサービスをリリースしました - Studyplus Engineering Blog
    invent
    invent 2019/09/27
  • GitHubのPull Panda連携を(さっそく)導入しました! - Studyplus Engineering Blog

    Androidチームの若宮(id:D_R_1009)です。 今朝方、Twitterを眺めていたら下記のツイートが目にとまりました。 ここ最近、超絶便利に感じていた Pull Reminders が GitHub に買収されて、誰でも自由に使えるようになったみたいだ。 GitHub + pull request でチーム開発をしていて、Slack も使っているところであれば、とりあえず試してみると良いと思う。https://t.co/xvHdkDu7YR— suzuki (@suzuki) June 17, 2019 「これは便利そうだ!」と感じたため社内Slackに投稿し、 利用を開始したところ 期待以上の便利さだったので、ブログでも紹介したいと思います。 Pull Pandaとは https://pullpanda.com/ GitHubのリリースでは下記のように紹介されています。 W

    GitHubのPull Panda連携を(さっそく)導入しました! - Studyplus Engineering Blog
    invent
    invent 2019/06/18
  • Sidekiq Enterpriseを使う - Studyplus Engineering Blog

    お久しぶりです。サーバーサイドエンジニアの花井です。 みなさんは非同期処理に何をお使いですか? ActiveJobでしょうか? Resqueでしょうか? Sidekiqでしょうか? 弊社では歴史的経緯から、上記全てのgemをプロダクトで使っていますが、 この度Sidekiq Enterpriseを導入して非同期処理の統一に着手しました。 Sidekiq Enterpriseの日語記事があまりなかったので、利用の検討や実際に使う際の注意点などを紹介できればと思います。 What is Sidekiq SidekiqはRuby製の非同期処理フレームワークです。 resqueを使うと、ジョブのリトライとユニーク性の担保のために自前で実装が必要でつらいので、sidekiqの採用に至りました。 また、非同期処理の流量を制限したい(特に外部サービスへの問い合わせが発生する所)という意図があり、Ent

    Sidekiq Enterpriseを使う - Studyplus Engineering Blog
    invent
    invent 2018/10/31
  • fastlaneでCode Signing StyleをAutomaticからManualに変更する - Studyplus Engineering Blog

    はじめに Studyplus開発部のiOSエンジニアの id:kurotyann です。2015年に入社してもうすぐで3年になろうとしています。 今回の開発者ブログは、弊社のiOSアプリ「Studyplus」 のCI環境について紹介しながら、fastlaneでCode Signing Styleを変更する方法を説明します。 Studyplus iOSのCI環境 図で説明すると下記のような構成です。他にもツールを使用していますが、基的な流れはこのような感じです。 CI環境の構成 Code Signing Styleについて Code Signing Styleは、XcodeのプロジェクトBuild Settingsから確認でき、AutomaticとManualの2種類を選択できます。Automaticの場合、Xcodeが適切なタイミングで開発に必要な証明書やProvisioning Pr

    fastlaneでCode Signing StyleをAutomaticからManualに変更する - Studyplus Engineering Blog
    invent
    invent 2018/05/28
  • 1