はじめに 皆様こんにちは、ソーシャル経済メディア「NewsPicks」(Media Infrastructureチーム)エンジニアの北見です。 現在、私は弊社サービスの一部のインフラ刷新を行なっている最中で、ここ数ヶ月 AWS CDKを触っておりました。 前職では Infrastructure as Code として Terraform を使ったことがあるのですが、少なくともAWS を使うという条件においては CDKを使うべき という結論に辿り着きました。 今回はそのように考えるようになった理由について説明していこうと思います。 前提 Terraform はパブリッククラウドにおける Infrastructure as Code の走りとして様々な現場に導入実績があり、それに対するリスペクトは持つべきです。 しかしよくある「AvsB」というメリデメの構図で「どっちでもいいよ、好みだよ」と投
ありがたいことに年末にメルカリの小泉さんとランチをご一緒させてもらいました。 CTO(@yutadayo)が作成した過去の失敗スライドに、リプライをいただいのがきっかけだったのですが、長らく競合事業(現ラクマ)をやっていたこともあり、きちんとお話ししたことがなく、とても学びが深かったので、ご本人に許可をいただいて、メモした内容と学びをシェアさせていただきます。 なんでメルカリに?噂ではフリルにも入社してもらえる可能性もあったとか?2007年よりミクシィに入社し、2012年の退任までCFOを務めていた その後、1年以上は他の会社の社外取締役をしたりフリーランスをしていた フリルは2012年夏リリース、メルカリは2013年春リリース 小泉さんは2013年冬にメルカリ入社 フリルのことは入社前から知っていて、2012年冬のIVSでコミュニティファクトリーの松本さんに「フリル知ってる?紹介してよ」
この記事は、はてなエンジニア Advent Calendar 2023の2024年1月17日の記事です。 はてなエンジニア Advent Calendar 2023 - Hatena Developer Blog id:hagihala です。先日、はてなブログの DB を RDS for MySQL 5.7 から 8.0 へアップグレードしたので、工夫した点などを共有します。 Aurora MySQL 3.x にしなかった理由 MySQL 5.7 -> 8.0 で対応した変更点 character set や collation のデフォルトが変更される explicit_defaults_for_timestamp がデフォルトで有効になる SQL mode の変更 デフォルトの認証プラグインが caching_sha2_password になり、 mysql_native_passw
こんにちは。株式会社SHIFT DAAE部の栗山です。 今日はAWS Cognitoを「裏側」の認証・認可サーバーとして使用するためのAPIを紹介します。 CognitoにはHosted UIというログイン画面が組み込まれており、これを使用すると認証処理を実装したり、そのための画面を作成する必要はありません。パスコード認証画面も、SNS認証画面もすべてCognitoが用意してくれます。 しかしながら、このHosted UIはデザインの自由度が低く、とくに一般顧客向けのシステムでは利用するのはなかなか難しいと思います。そこで今回はHosted UIを使用せず、Cognitoに対してAPIサーバからアクセスするようにして、Cognitoの各種認証機能を使用するためのAPIを紹介したいと思います。 ※タイトルの「裏側」というのは、ユーザーが直接Cognitoにアクセスする構成ではなく、Cogni
はじめに こんにちは。GiftmallのEC機能の開発やインフラの運用を担当している藤原(@fujishochan)と申します。本年の1月、Aurora MySQL V1のEOLを受けて、GiftmallのProduction環境の一部で使っていたAurora MySQL V1のDBをAWS RDS Blue/Green Deployment (以下、RDS Blue/Green Deployment)を用いてAurora MySQL V2に移行しました。今回、その移行プロジェクトの内容を紹介します。本記事がRDS Blue/Green Deploymentを使われる方の参考になればと思うと同時に、エンジニアリングが主導して行うプロジェクトの進め方の一つの例としても参考になればとも考えております。 背景 対象システムのDB構成 DB移行対象のシステムの概略を以下の図に示します。 図を説明し
こんにちは。ギフトモールで Android アプリの開発をしている @KeithYokoma です。 スマホアプリで一般的な UI のパターンのひとつに Bottom Navigation (いわゆる下タブ)があります。Android においては、Jetpack ライブラリにある BottomNavigationView を使うことでかんたんに Bottom Navigation の UI を構築できます。Bottom Navigation の UI は画面遷移の実装もセットになっており、Jetpack Navigation と Fragment、BottomNavigationView を組み合わせて画面遷移を実装します。 この記事では、BottomNavigationView と Jetpack Navigation を組み合わせた Fragment ベースの画面遷移の実装にけおる勘所
ReactのuseEffectは、フックの中でも使い方が難しいものの一つです。そこで、この記事では筆者が考えるuseEffectの望ましい使い方を皆さんに伝授します。 基本原則 技術やその要素の使い方を考えるにあたって、筆者が好んでいるのは基本原則を置いてそれに基づいて判断することです。ということで、この記事ではまず筆者が考えるReactの基本原則を紹介します。 筆者がもっとも重要視する原則は、ReactはUIライブラリであるということです。つまり、ReactにはUIの管理をさせるべきであって、その他のことはReactの役目ではないということです。Reactが難しいと思う人がいる場合、何でもかんでもReactにやらせようとするから余計に難しくなっているのだと思います。 例えばアプリケーションのロジックの管理やそれに付随するステートの管理はReactの役目ではないので、Reactの外部で処理
このブログのアクセス数はゆっくりと増えてきていて、前日のPV数を確認するのが最近の楽しみでした。 しかしある時、Vercel から警告のメールが届きました。要約するとこうです。 Fair Use Policy に違反しています。対応しないと BAN します。 Fair Use Policy とは、各プランごとに定められた利用制限のことです。 Fair Use Policy 確認すると Image Optimization Source Images が直近30日間で Hobby プランの上限である 1,000 を超えてしまっていました。 BAN だけは何としても避けなければ。急いで対応策を検討しました。 警告メールの中で「Pro プランにすれば大丈夫だよ」と書かれていたのと、Pro プランには14日間の無料トライアルが含まれていたので、まずは Pro にアップグレードして時間の猶予を確保す
住所〒849-0312 佐賀県小城市芦刈町下古賀1379ー1 TEL0952-66-3441 FAX0952-66-3441 営業時間9時から17時 定休日祝日、土日 E-mailinfo@hashimanori.com
IDS(侵入検知システム)とは IDS(Intrusion Detection System)は、不正な第三者からの侵入を検知して通知する仕組みです。主にネットワーク型とホスト型があり、前者の代表的なツールはsnort、後者はtripwireです。始めは、自前でセットアップしたsnortから試そうと思ったのですが、Amazon EC2はプロミスキャスモード(ネットワークに流れる全てのパケットを受信するモード)を禁止しているため使えません。解決方法として、商用snortを提供しているSourcefire社の専用AMIを使う必要がありそうです(プロミスキャスモードで動くのかな?)。よし、じゃぁこのAMIを使おうと思ったら、このAMIは東京リージョンには無いw。そこで、ネットワーク型のIDSは別の機会として、今回は、ホスト型IDSの動作確認をすることにしました。ホスト型IDSで、Amazon L
Kotlinは表現力が豊かな言語で標準ライブラリも充実しており、モダンな機能を多数備えています。現在も活発に開発が進んでいて他の言語から様々な概念を取り入れることも頻繁にあります。そんなKotlinですが、他の言語にあってKotlinにはないものも少なからずあります。今回はEitherを例にあげ、KotlinでEitherを表現する方法について考えてみます。 異なる2つの型のいずれかの型を返り値とする関数を作りたい はじめに、次のような2つの異なる型のいずれかを返す関数を考えてみます。 data class Foo(val name: String) data class Bar(val description: String) fun getSomething() = if (flag) { Foo("foo") } else { Bar("bar") } この getSomething
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。 Saga パターン この saga パターンは、分散アプリケーションの一貫性を確立し、複数のマイクロサービス間のトランザクションを調整してデータの一貫性を維持するのに役立つ障害管理パターンです。マイクロサービスはトランザクションごとにイベントを公開し、イベントの結果に基づいて次のトランザクションが開始されます。トランザクションの成功または失敗に応じて、2 つの異なるパスをたどることができます。 次の図は、saga パターンが AWS Step Functions を使用して注文処理システムを実装する方法を示しています。各ステップ (ProcessPayment「」など) には、プロセスの成功 (「」などUpdateCustomerAccount) または失敗 (Se
こんにちは。ギフトモールで Android アプリの開発をしている @KeithYokoma です。 前回の記事ではアプリの UI の進化に合わせた設計の見直しについて解説しました。今回も UI の設計について解説しますが、特に View レイヤーに相当する部分の設計について Groupie や Jetpack Compose といった仕組みを使った画面実装の改善について解説します。 素のままの RecyclerView を使った実装の複雑化 ギフトモールのアプリは様々な種類のコンテンツを一覧形式でスクロールしながら閲覧する UI を持っています。ひとつの List の中で様々な表示を実現するため、RecyclerView の実装も複雑になりがちです。 アプリ開発開始時点ではユーザインタラクションが少なく、ほぼ表示のみに徹することができたため素のままの RecyclerView で十分に実
こんにちは。@KeithYokoma です。今回はこれまでの投稿からは少し話題を変え、AndroidX Fragment ライブラリに関する問題の発見と解決にまつわることを解説しようと思います。 画面の状態を保存する時に TransactionTooLargeException が多発し始める 以前の記事でも紹介しましたが、ギフトモールアプリでは次のような構成で画面を実装しています。この構成で Unidirectional なデータフローを作ることが第一の目的ですが、SavedStateHandle を組み合わせることによって ViewModel の状態の保存と復帰も実現しています。ギフトモールアプリでは ViewState で ViewModel の状態を表現しているため、ViewState の保存と復帰を共通化しています。 // 共通のベースとなるインタフェースと ViewModel
はじめに 皆さん、docker composeを利用しているでしょうか? 複数のdockerコンテナをまとめて立ち上げたり、環境変数を定義できたり便利ですよね。 今回はある程度docker composeを利用している方向けに私が便利、便利そうと感じたdocker composeの機能を挙げてみました。 docker compose cli v2を利用 docker-composeではなく docker composeコマンドも利用可能になってます。 Docker Desktopでは v3.4.0から利用可能で、基本的にはコマンドの互換性あります。 Docker image名やコンテナ名のプレフィックスをディレクトリ名から変更する 通常は ${ディレクトリ名}_${サービス名}でイメージが作成されます。 環境変数COMPOSE_PROJECT_NAMEでプロジェクト名を指定することにより
株式会社ゆめみ Advent Calendar 2022 23日目の記事です。 はじめに 2022年も残りわずかとなりましたね。 今年一年を振り返ってみて、普段業務でよく使用しているmacOS用のターミナル向けのツールやコマンドを紹介したいと思います。 動作確認環境 生産性が向上したと思うmacOS用ターミナル向けツールやコマンド 1. Fig.app ターミナルでコマンドの自動補完を行うGUIアプリです。ディレクトリ名やファイル名を自動で補完してくれたり、gitの各種コマンドやブランチ名等も補完してくれます。一般的なコマンドは補完が効くので、かなり生産性向上に寄与してくれました。 見た目は以下のような感じになります。 2. Starship BashやZsh、Fish等で使用できるカスタマイズ可能なシェル用プロンプトを提供するツールです。 細かく調整しなくても、いい感じのプロンプトにして
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く