タグ

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

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

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

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

    フロントエンドエンジニアの小林和弘です。 去年の 4 月に「Web アプリを 3 つ使ったサービスを 3 ヶ月でつくりたい」という話が降ってきて、無茶を現実にした話をします。 新規サービス「やくばと」で Workspaces のモノレポを使って、医療機関画面、薬局画面、患者画面の 3 つの Nuxt を構築しました。 やくばととは 医療機関、薬局、患者さまの間でやり取りされる医療機関起点の薬局向け処方せん画像事前送信サービスです。処方せんに関する業務負荷を軽減すると共に、患者さまの大きな負担である医療機関、薬局での待ち時間を軽減するということを主な目的としたサービスです。 医療機関、薬局の DX を進め、患者さまの負荷軽減に貢献できる素晴らしいサービスになっています。 開発チームでは医療機関、薬局、患者さまに提供している Web 画面をそれぞれ医療機関システム、薬局システム、患者システムと

    2ヶ月半で Nuxt サービスを 3.5 個つくった話 - メドピア開発者ブログ
    tofu-kun
    tofu-kun 2023/06/13
  • Ruby3.0でのパターンマッチ機能の変更点 - メドピア開発者ブログ

    こんにちは、メドピアのサーバサイドエンジニアの草分です。 2020年12月25日、ついに待望のRuby3.0がリリースされましたね。 以前、Ruby2.7で発表されたパターンマッチについての記事を執筆したのですが、Ruby3.0になりいくつか追加/変更が入っています。 この記事ではそれらの変更点を確認していきます。 「Rubyのパターンマッチとは何ぞや?」という方は是非前回の記事も合わせてご覧ください。 tech.medpeer.co.jp Ruby3.0を使うには rbenvなど、主要なサードパーティツールが既にRuby3.0に対応しています。 それらを使ってインストールするのが簡単でしょう。 # rbenv rbenv install 3.0.0 # rvm rvm install ruby-3.0.0 Windowsの方は RubyInstaller for Windows などをお

    Ruby3.0でのパターンマッチ機能の変更点 - メドピア開発者ブログ
  • API認証基盤の改善について - メドピア開発者ブログ

    今月の一日でメドピアに入社してちょうど1年になったCTO室の内藤(@naitoh) です。 主にやっていることはAPI認証基盤の改善です。 この1年でやってきた事を技術ブログで紹介させて頂きます。 背景 メドピア で採用されているバックエンドの言語(フレームワーク)は blog のタイトルにもあるように PHP から Rails に移行が行われているのですが、 実は上記以外に Golang(以下 Go) も使用しています。 このあたりの当時の開発背景は下記の記事に書かれておりますのでご参考にして頂ければと思います。 tech.medpeer.co.jp 私が昨年入社した時点でこのAPI認証基盤(API ゲートウェイ)の保守が難しく、Go のわかる開発者がほぼいなかったため機能追加が行えない状態になっていました。 このAPI認証基盤へのユーザーログイン処理時のアクセス負荷が朝方に集中し、メ

    API認証基盤の改善について - メドピア開発者ブログ
    tofu-kun
    tofu-kun 2020/11/17
  • バックグラウンドで実行するバッチ処理の改善のためSidekiq Enterpriseを導入しました🥳 - メドピア開発者ブログ

    こんにちは、エンジニアの森田です。 MedPeerでは、バックグラウンドで非同期に処理を実行させる方法としてSidekiqを使っておりましたが、今回Sidekiq Enterprise(Proを含む)を導入しました。 https://sidekiq.org/products/enterprise.html 今回はSidekiq Enterpriseを導入するにあたって解決したかった課題と実際の導入方法、導入後の活用事例をを紹介できればと思います! Sidekiq Enterpriseとは? Sidekiq Enterpriseとは、その名の通りエンタープライズ向けの機能拡張が行われた有料版のSidekiqです。(Sidekiq Enterpriseとは別にSidekiq Proもありますが、Sidekiq Enterpriseを導入するとSidekiq Proの機能も使用出来るようになりま

    バックグラウンドで実行するバッチ処理の改善のためSidekiq Enterpriseを導入しました🥳 - メドピア開発者ブログ
    tofu-kun
    tofu-kun 2020/04/01
    良さそう
  • Rubyバージョンアップで見つけたバグとハマりどころ - メドピア開発者ブログ

    こんにちは、最近ruby-vipsに惚れ込み始めたエンジニアの宮原です🐕 先日、医師専用コミュニティサイト「MedPeer」で使用されているRubyをVersion 2.6.5にアップデートしました🎊 今回は、Rubyアップデートを行った際にハマった箇所について紹介と解説をしてみたいと思います。 また、類似の内容で発表もさせていただいておりますので、合わせてご一読いただければと思います。 今回紹介するハマりどころは、ActiveSupport::DurationのバグとSidekiqの安全な再起動についてです。 🐛Durationのバグ 最新のdevelopを取り込み、Rubyアップデートのブランチで作業しているとReceived 'killed' signalというエラーが発生し、CIのRSpecが途中で終了してしまう事象に遭遇しました。 3並列目でメモリをいつぶし移行のテストが

    Rubyバージョンアップで見つけたバグとハマりどころ - メドピア開発者ブログ
    tofu-kun
    tofu-kun 2019/11/01
    なるほど
  • Rails × ECS 運用してみたわかった起動タイプ EC2, Fargate の使い所 - メドピア開発者ブログ

    メドピアマッスル部上腕二頭筋担当、CTO室 kenzo0107 です。 今回はメドピアの直近のプロジェクトで採用している Rails × ECS Fargate についてです。 直近プロジェクト 直近プロジェクトでは AWS ECS を採用しています。 2018年10月にリリースした スギサポ deli は、メドピアで Fargate 初採用となったプロジェクトです。 スギサポ deli とは? sugisapo.ws 病気で事制限が必要な方やシニアの方々、より健康な生活を目指す方など、誰もが美味しく召し上がれるお事をお届けするサービスです。 「事制限」 と聞くと、簡素な事をイメージされる方もいらっしゃると思いますが 一度見て頂くとお分かりの通り、かなりバラエティに富んだ内容となっており、目にも美味しい品々が並んでおります。 是非一度お試しいただければ幸いです♪ 今回お話ししたい

    Rails × ECS 運用してみたわかった起動タイプ EC2, Fargate の使い所 - メドピア開発者ブログ
  • Railsで処理を別クラスに切り出す方法について - メドピア開発者ブログ

    こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。最近はエンジニアが増えた影響か、Railsの質問に答えていることが多いです。 以前、Railsの太ったモデルをダイエットさせる方法についてというタイトルでPOROを使っていこうという話を書きました。その際にコード例などもなるべく多く載せるようにしたのですが、このエントリだけを読んだ状態では、いざ「POROを使ってみよう!」としたときにまだ悩む余地がありそうです。 POROはその名の通り普通のRubyオブジェクトなので、いろんな書き方ができてしまいます。それなりに経験がある人でないと、どのように書いたらいいんだろう…と悩んで時間を使ってしまいそうですね。さらに、複数人で開発しているチームだと書き方のバラツキも気になるところです。きっと、POROを書くときのお作法が決まっている方が開発しやすいはず。 そこで、

    Railsで処理を別クラスに切り出す方法について - メドピア開発者ブログ
  • ActiveModelSerializersを使った所感 - メドピア開発者ブログ

    こんにちは。メドピアエンジニアの保立です。 メドピアでは、ドクター向けに運営している「MedPeer」のiOSアプリを3月15日にリリース致しました!!! 今回は、iOSアプリ開発の過程で、APIの実装にActiveModelSerializersを使ったので、そこで得た知見を書きます。 ActiveModelSerializers を使った理由 json形式のレスポンスを返却する場合、jbuilderを使うケースも多いのではないでしょうか。 メドピアでも、今まで外部へのAPIにはjbuilderを使用していました。 しかし、iOSアプリ用のAPIでは、以下のメリットを考慮して、ActiveModelSerializersを使うことにしました。 メリット① 複雑なjsonを返す際に、ActiveModelSerializersの方が、レスポンスが早い スマートフォン用のAPIでは、なるべく

    ActiveModelSerializersを使った所感 - メドピア開発者ブログ
  • Vue.jsとRailsの最適な融合を考える - メドピア開発者ブログ

    もう新年を迎えて2ヶ月が経ちますね。 多くの人は新年の目標を立てますが、皆さんは何かしら立てましたでしょうか? 英語を毎日勉強するという目標を立てましたが、既に挫折してしまったエンジニアの村上(pipopotamasu (pipopotamasu) · GitHub)です。 日はその懺悔も込めてVue.jsとRailsの話をお送りします。 この記事を書く背景 以前ブログで書いた通り、現在Webpackerへの移行を機にフロントエンド周りの改善を進めています。 tech.medpeer.co.jp その中でVue.jsとRailsをいい感じに組み合わせるにはどうしたら良いかについて悩むことがあったので、記事にて共有させていただきます。 悩んだ内容としては以下になります。 1. Ajax通信時にCSRFトークンをどう設定すればいいか? 2. 単一ファイルコンポーネントで書くHTMLをもっと

    Vue.jsとRailsの最適な融合を考える - メドピア開発者ブログ
    tofu-kun
    tofu-kun 2018/02/27
    だいたい似たノリでやってる。Rails と Vue はもっと距離おきたい気持ちも強い。
  • Rails + AWS でモバイルフレンドリーな動画配信サイト構築 - メドピア開発者ブログ

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

    Rails + AWS でモバイルフレンドリーな動画配信サイト構築 - メドピア開発者ブログ
  • Railsの太ったモデルをダイエットさせる方法について - メドピア開発者ブログ

    こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。最近はよくリファクタリングをしています。 今回は、最近僕がリファクタリングしている内容についてまとめようと思います。 メドピアではFat Model/Controllerを避けるために、rubocopの設定を利用しクラスの行数が300行以下になるよう制限しています*1。最近300行を超えるモデルが出てきたので、一部の処理を別のクラスに切り出し始めました。 このとき、Railsが提供している機能であるconcernsを利用すると楽に行数を減らすことができますが、それだとrubocopの指摘を回避できるという意味しかないので、なるべく委譲(composition)を利用して処理を別クラスに移していっています*2。 複数モデルにまたがる処理を切り出す Railsアプリケーションを書いていると、複数のモデルを一度

    Railsの太ったモデルをダイエットさせる方法について - メドピア開発者ブログ
  • form objectを使ってみよう - メドピア開発者ブログ

    こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。 Ruby化のプロジェクトが始まって1年が過ぎました。新しいメンバーも入り、Railsのコード量は日に日に多くなっています。可読性を保ちつつアプリケーションを大きくしていくために、使える知見をチームメンバーに効率よく伝えていくのが大事だと感じる今日このごろです。 普段メドピア内ではコードレビューや社内勉強会などで知識のシェアを行っています。そんなとき、ブログ記事や書籍などのまとまった文章があると「これ読んでおいて」と言うだけで良くなるので楽です。先日form objectを使ったほうがいいですよーという内容でレビューコメントをつけようとしたところ、日語で詳しくまとまった文章が見当たりませんでした><なければ自分で書くしかありません。そこで今回はRailsにおいて可読性を保つための知見である、form o

    form objectを使ってみよう - メドピア開発者ブログ
    tofu-kun
    tofu-kun 2017/05/09
  • イマドキのジョブスケジューラについて考える - メドピア開発者ブログ

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

    イマドキのジョブスケジューラについて考える - メドピア開発者ブログ
    tofu-kun
    tofu-kun 2017/02/06
  • レガシーな独自フレームワークから脱却してRailsへ徐々に移行している話 - メドピア開発者ブログ

    みなさんこんにちわ。 メドピアでエンジニアをやっている内田と申します。 現在メドピアではPHPで作られたレガシーな独自フレームワーク (以下FW) からRailsへと移行するプロジェクトが進んでいます。 今回は移行に向けて行ったことについて共有したいと思います。 移行の計画 メドピア株式会社では、医師限定のコミュニティサイト「MedPeer 」を運営しています。 「MedPeer 」サービス内では、薬剤評価掲示版、症例相談、Forum、ニュースなど、医師同士が情報交換をするための、機能の異なる複数のサービスを提供しています。 それらサービスの内部では7年前に作られたPHPの独自FWが採用されており、コードが肥大化したことで機能の変更や追加がとても困難になっていたことが課題でした。 そうした課題を解決するために、アーキテクチャの見直しを含めたリプレースがエンジニアの主導で計画されました。 様

    レガシーな独自フレームワークから脱却してRailsへ徐々に移行している話 - メドピア開発者ブログ
  • 1