ブックマーク / tech.medpeer.co.jp (11)

  • 大規模サービスのデータベースエンジンを MySQLからAurora MySQLへの移行 〜リードレプリカ, DNSを利用した最小ダウンタイム移行方法〜 - メドピア開発者ブログ

    バックエンドエンジニアの徳富(@yannKazu1)です。先日、メドピアのメインサービスであるmedpeer.jpで使われているデータベースエンジンを、MySQLからAurora MySQLへと移行しました。今回はその移行のプロセスについて詳しくお話しします。 移行したデータベースの簡単なインフラ構成 移行方針 今回移行するデータベースは複数のアプリケーションから参照されており、ダウンタイムによるユーザー影響が大きいため、移行方針の検討の段階で重視したのは、ダウンタイムの最小化でした。これを達成するために、DNSのCNAMEレコードと、Auroraのリードレプリカを活用し、移行させることにしました。 DNSのCNAMEレコードの使用 データベースエンドポイントをアプリケーションに直接記述する代わりに、DNSのCNAMEレコードを利用して間接的に参照するようにしました。これにより、データベー

    大規模サービスのデータベースエンジンを MySQLからAurora MySQLへの移行 〜リードレプリカ, DNSを利用した最小ダウンタイム移行方法〜 - メドピア開発者ブログ
    nishitki
    nishitki 2023/08/22
  • ECR拡張スキャンでRailsアプリを診断した際の脆弱性警告(偽陽性)への対策 - メドピア開発者ブログ

    皆様こんにちは、サーバーサイドエンジニアの草分です。 最近ポケモン最新作を買ってしまったのでひたすら野原でボールを投げ続ける日々を送っています。 さて題に入りましょう。 Amazon ECRには、pushしたコンテナイメージへのイメージスキャン(脆弱性診断)機能があります。 Image scanning - Amazon ECR メドピアではこれを利用して全社横断的にアプリの脆弱性の検知および可視化を行っています。 脆弱性が検知された場合の表示 この記事では、Railsアプリをイメージスキャンした際の【偽陽性】警告の問題と、その解決策について紹介いたします。 問題 ECRのイメージスキャンには「基スキャン」「拡張スキャン」の2種類があり、この内の拡張スキャン(Enhanced scanning)では、Rubyのgemやnpmのパッケージなども診断の対象となります。 Gemfile.lo

    ECR拡張スキャンでRailsアプリを診断した際の脆弱性警告(偽陽性)への対策 - メドピア開発者ブログ
    nishitki
    nishitki 2022/02/07
  • SREチームのセキュリティインシデントゲームデー - メドピア開発者ブログ

    CTO室SREの侘美です。最近はM5Stackを嗜んでおります。 ここ半年ほど、MedPeerグループ全体のAWSセキュリティ改善に力を入れてきました。 その中で、AWS Well-Architectedのセキュリティのベストプラクティスにも記載があるゲームデーを実施したところ、とても学びが多かったので記事にまとめました。 ゲームデーとは? Well-Architectedには以下のように記載されています。 ゲームデーを実施する ゲームデーを実施する: さまざまな脅威について、インシデント対応イベントのシミュレーション (ゲームデー) を実施します。このゲームデーには、主要なスタッフや管理者を参加させてください。 教訓から学ぶ: ゲームデーの実行から得られた教訓は、プロセスを改善するためのフィードバックに含まれている必要があります。 出典: https://wa.aws.amazon.

    SREチームのセキュリティインシデントゲームデー - メドピア開発者ブログ
    nishitki
    nishitki 2021/03/24
  • メドピアで開催している社内読書会と社内読書分科会について - メドピア開発者ブログ

    こんにちは。メドピアのお手伝いをしています @willnetです。花粉が厳しい季節みなさんいかがお過ごしでしょうか。僕は毎年レーザー治療したいな、と思っているのですが気づくともう春になっています。次回こそは…。 さて、メドピアでは毎週水曜日の11時から12時の間に社内読書会を開催しています。これは社内でなるべく多くの人が仕事上で使える知見を獲得することを目的としています。進め方は 予習不要 音読する キリのいいところで止めて感想を話す という形です。詳しい内容は以前個人のブログで書いたので興味のある人は読んでみてください。 しかし読書会を定期開催するようになってから4年がすぎ、また社内のエンジニアがどんどん増えてくると「読書会をもっと改善したいな」と思うことが増えてきました。 すでに読んでしまったは題材として扱いづらい 例えばメタプログラミングRuby 第2版は良いなので、当然この

    メドピアで開催している社内読書会と社内読書分科会について - メドピア開発者ブログ
    nishitki
    nishitki 2021/03/19
  • poltergeistからheadless chromeへ移行する時に気をつけること - メドピア開発者ブログ

    こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。最近は子育てに忙しくしています 👶 先日、メドピアで利用しているcapybaraのjavascript driverをpoltergeistからheadless chrome(selenium-webdriver)に移行しました。driverを変更するにあたって既存のテストコードをいくつか修正する必要があったので、そこで得た学びを共有したいと思います。 なぜ移行したのか ここ数年、Railsでエンドツーエンドのテストを書くときにはpoltergeistを使う、というのがデファクトスタンダードだったはずです。それ以前はみんなcapybara-webkitを使っていましたが、poltergeistはバックエンドにPhantomJSを使っており、Qtに依存しているcapybara-webkitと比べてビルドが

    poltergeistからheadless chromeへ移行する時に気をつけること - メドピア開発者ブログ
    nishitki
    nishitki 2018/07/04
  • Rails × ECS でオートスケーリング&検証環境の自動構築 - メドピア開発者ブログ

    マリオカートでカーブを曲がるときに体を傾斜させてしまうCTO室 kenzo0107 です。 今回は 2018/04/02 にリニューアルしたイシコメの Rails × ECS についてです。 イシコメとは? 「イシコメ」は、医師10万人の声でつくるヘルスケアメディアです。 医師と一般の方々をつなげることで、医療情報格差を埋めることを目指しています。 MedPeerの10万人の医師会員に協力いただいたアンケート結果をもとに編集部で記事を執筆し、医師監修の上で配信。多くの医師の声を反映することで、より正しい情報を提供しています ishicome.medpeer.jp リニューアル経緯 リニューアル前は以下のような構成でした。 フロントに Laravel 5 バックに Drupal Docker on EC2 コンテナイメージの S3 でのプライベート管理 Docker がまだ出てきて間もない頃

    Rails × ECS でオートスケーリング&検証環境の自動構築 - メドピア開発者ブログ
    nishitki
    nishitki 2018/06/20
  • Rails + AWS でモバイルフレンドリーな動画配信サイト構築 - メドピア開発者ブログ

    あけましておめでとうございます。 メドピアのSRE @kenzo0107 です。 2018年もよろしくお願いします。 今回は昨年リニューアルした動画配信システムについてです。 経緯 これまでのメドピアの動画配信は CloudFront 経由で S3 上の mp4 を video タグで参照し配信してました。 この配信方法では CloudFront でキャッシュしづらく 通信状況によってはファーストビューまでに時間が掛かり、サイト離脱へ繋がります。 また、直リンク禁止の動画の場合、 リファラチェック等をするかと思いますが 一部 IE Edge のバージョンで video タグでリファラ参照ができないという仕様があり*1 既存の仕組みをフロントから変える必要がありました。 以上の経緯から動画配信の仕組みを見直し要件を洗い出しました。 要件 動画は mp4 で納品される為、HLS形式へエンコード

    Rails + AWS でモバイルフレンドリーな動画配信サイト構築 - メドピア開発者ブログ
    nishitki
    nishitki 2018/01/19
  • 【初心者向け】レビュワーをイライラさせるRSpec集と解決方法 - メドピア開発者ブログ

    こんにちは。メドピアにjoinして3ヶ月目の保立です。 毎週のように新しい開発が進むため、毎日楽しくソースコードを書かせてもらっています。 テストコードを制するものは、Railsを制す!!! ということで、今回はメドピアのRSpecについてです。 メドピアでは、RSpecを用いてテストコードを書いており、 - 1) models配下に記載するビジネスロジックに対するUnitTest - 2) 機能ごとのEndToEndTest (E2E Test) の2種類のテストコードを書いています。 RSpecについて、書こうと思ったきっかけ RSpecは(というかRuby自体が)様々な書き方で動かすことができるため、統一したルールがないと、書いた人によってバラバラなテストコードになります。 私も初めてRSpecを書いた際に、参考書やソースコードによって書き方がバラバラで、どのRSpecを参考にすれば

    【初心者向け】レビュワーをイライラさせるRSpec集と解決方法 - メドピア開発者ブログ
    nishitki
    nishitki 2017/05/28
  • イマドキのジョブスケジューラについて考える - メドピア開発者ブログ

    こんにちは。Ruby化をすすめるメドピアをお手伝いしている@willnetといいます。 メドピアではPHPからRubyに移行するにあたり、単純に言語を置き換えるだけではなく、言語以外の仕組みについても適宜見直しを行っています。今回はそのうちジョブスケジューラを見直した件について書いていきます。 言語を置き換えた話はこちらを参考にしてください。 レガシーな独自フレームワークから脱却してRailsへ徐々に移行している話 - メドピア開発者ブログ そもそもジョブスケジューラってなに 「毎日1時になったら前日のアクセスログを集計して統計データとしてまとめる」などといった定期的に実行するジョブを登録するためのものです。 ウェブサービスを作るときのジョブスケジューラといったらやっぱりcronですよね。メドピアでもこれまでcronを活用していました。しかしサービスが小さいうちはcronでもそれほど問題な

    イマドキのジョブスケジューラについて考える - メドピア開発者ブログ
    nishitki
    nishitki 2017/02/06
  • TerraformでCloudWatch EventsのEBSスナップショット定期作成機能を設定する - メドピア開発者ブログ

    はじめに 世の中の医療・ヘルスケア情報を医師たちが実名で解説するWEBメディア、イシコメ開発担当の大谷です。 イシコメは少数の開発者で開発・運営しているため、省力化のためTerraformなどのツールによりインフラ管理を自動化しています。 今回は、TerraformでEBSのスナップショットをサーバレスで定期的に作成する方法について調査したため、その方法を共有します。 稿ではTerraform自体の解説は行いません。 Terraformを使ったことが無い方は、公式サイトのチュートリアルが分かりやすいので是非試してみて下さい。 尚、使用したTerraformのバージョンはv0.6.16です。 手順 CloudWatch EventsのEBSスナップショット作成機能をTerraformで設定します。 必要なのは.tfファイル一つですが、その中に記述する要素について順を追って説明します。 1.

    TerraformでCloudWatch EventsのEBSスナップショット定期作成機能を設定する - メドピア開発者ブログ
    nishitki
    nishitki 2016/06/17
  • Golang(Go言語)を採用して、たった二人で基盤となるAPIゲートウェイを開発した話 - メドピア開発者ブログ

    はじめに 初めまして、気がつけば先月の25日で入社1年目を迎えた、 技術部 & Sake部部長 の@shinofara(篠原)です。 1月頃からGo言語(Golang) ばかり触りすぎて、PHPをたまに触ると; を忘れて怒られます。 困ったものです.... 今回は、僕も含めた2名で進めてきた、弊社初の Go言語(Golang) プロダクトについてのお話をしたいと思います。 少し長いですが、お付き合いいただければとてもうれしいです! ※関係無いですが、gopher君可愛いです。 Go言語のロゴ、マスコットは2009年にRenée French(http://reneefrench.blogspot.jp/)さんによって作成・公表されました。 これらはCreative Commons Attribution 3.0 Unported License(http://creativecommons

    Golang(Go言語)を採用して、たった二人で基盤となるAPIゲートウェイを開発した話 - メドピア開発者ブログ
    nishitki
    nishitki 2015/12/14
  • 1