作ったもののイメージ ホテルの客室検索APIとは、チェックイン日やその他の条件を入力として受け取り、マッチするホテルの客室を返すものです。以下の画像はExpediaのものですが、赤枠で囲っている部分(他にもたくさんある)が入力になります。2022年4月頃に無事リリースされました。 この検索APIを構築を任された際に、何を考えて設計していったのかを以下に示していきます。 顧客からの要望 顧客の会社は当時エンジニアがおらず(やりとりしている社長は元エンジニアだが)、これまでも私と仕事をしたことがあったので依頼が来ました。顧客と密にコミュニケーションを取りわかったのは、以下のような要望でした。 このAPIは自社サービスとして第3者(要契約)に使ってもらえるようにしたい 完全に一般公開ではなくちゃんと契約を結ばないと利用できないようなもの 検索条件を柔軟に、かつ使いやすい感じで指定できるようにした

なぜ、サービスクォータを意識しないといけないのか? 結論から言うと、サービスクォータを意識していないと、システムの信頼性・可用性が低下してしまう可能性があるためです。 例えば、AさんがAPIGateway -Lambda - DynamoDB を用いてサーバーレスなAPIサービスを作ったとしましょう。 Aさんは「Lambdaは自動でスケーリングしてくれるから利用者が増えても大丈夫」と考えています。 このAPIサービスは好評を博し、順調に利用者が増えていきました。 すると、ある日突然、このAPIでエラーが頻発するようになりました。 なぜでしょう? 原因は、利用者増加に伴い、Lambdaの同時実行数が増え、同時実行数が「1,000」を超えた=Lambdaのサービスクォータに引っ掛かってしまったためでした。 つまり、Aさんはサービスクォータを意識していなかったため、このAPIサービスの信頼

ある日突然メールが送れなくなることがあります。Microsoft Azureからメール送りたいMicrosoft Azureには、何故かメール関連のリソースが全く存在しません。 メールサーバみたいなサービスはありませんし、自力でのSMTP設置も非推奨です。 公式にもSendGridを使えという立場みたいです。 SendGridとは SendGridはメール送信サービスです。 適当にPOSTするだけで、それをメールにして送ってくれるというナイスなサービスです。curl --request POST \ --url https://api.sendgrid.com/v3/mail/send \ --header "Authorization: Bearer $SENDGRID_API_KEY" \ --header 'Content-Type: application/json' \ -

idをautoincrementしない方が良い理由 こんにちは。株式会社プラハCEOの松原です。 最近プラハチャレンジの参加者とお話している際に 「PKのidはautoincrementするとして...」 とナチュラルにid=autoincrementするものという前提が見えたので、「本当にidをautoincrementしても良いものだろうか?」と気になったことを書いてみようと思います。もしフレームワークが自動的にautoincrementでテーブルを作るからなんとなく使っているという方がいたらご一読いただいた後、それでも連番を使いたい理由があれば教えて欲しいです・・! 不必要に情報を晒すことになるスクレイピングされたり もしも僕が某大手に勤めているエンジニアで「競合サービスAにのってる物件情報、全部コピーして新しいサービス作ろうぜ」と指示されたらですよ?「人としてそれはやっちゃダメで

この領域では、核となる一連の原則が、開発者がマイクロサービスベースのソリューションの正しい方向に設計決定を向けるのに役立ちます。SOLIDの原則の一部はマイクロサービスに適用されますが、オブジェクト指向は、一般に分散システムの要素、特にマイクロサービスとは根本的に異なる要素 (クラス、インターフェイス、階層など) を扱う設計パラダイムです。 したがって、マイクロサービス設計のために、次の一連の核となる原則を提案します: Interface segregation: インターフェイス分離 Deployability (is on you): デプロイ容易性 Event-driven: イベント駆動 Availability over consistency: 整合性よりも可用性 Loose coupling: 疎結合 Single responsibility: 単一責任 原則は、マイクロ

本記事で紹介している賃貸物件検索サービス Comfy は 2021/07/30 13:48 をもって閉鎖いたしました。使用していた物件データに関して、データの掲載元より利用許諾を得られなかったためです。本記事で紹介しているサービスが閲覧いただくことができなくなってしまい、大変申し訳ございません。本記事は、サービスに関する一部の内容を削除した上で、使用技術等に関する内容についてはいったんそのまま残しておきますが、近いうちに記事自体を削除するかもしれません。 ※ 2021/07/30 19:00 頃追記 こちらを見に来ていただいた方に、サービスが動いていた頃の動画を下記ツイートにアップロードしています。 サービスを直接お試しいただけない状態で申し訳ございませんが、少しでもサービスの雰囲気が伝われば幸いです。 下記、元の記事の内容です個人開発で賃貸物件検索サービス Comfy (上記サービス

一昨日「買って応援!」というサイトをリリースしました。 コロナの影響で打撃を受けている生産者や飲食店、販売店の方々が「廃棄になるよりは・・・」という思いで各所で販売されていますが、情報が散らばっていたのでまとめている【買って応援!】するためのサービスです。 割とモダンな構成で作っているかなと思うので、使用している技術・サービス周りを少しまとめてみました。 Frontend今回は初めてProductionでNext.js(React)を使いました。 元々自分はNuxt.js(Vue)を書くことが多く、いつもだったら「Nuxt.js(Vue) + Firebase +Heroku + Algolia (+ 必要に応じてFastly)」を採用することが多いんですが、直近のNext.js 9.3から強力なSSGサポートが入ったこともあり、個人でやるんだしせっかくなら、ということでフレームワークも

突然ですが、「UI Stack」ってご存知ですか?アメリカのプロダクトデザイナー Scott Hurff さんが3年ほど前に世に出した考え方で、考慮すべき UI の5つの側面を示したものです。 当時「これは使える!」と思って社内向けに作った勉強会資料を見つけて、今でもやっぱりすごく大事だと思ったので、備忘録的に書いておきます。 ちなみに元記事はこちら。(英語です)UI Stack とは?Stackとは、1つの画面が持つ(複数の)側面、状態、ステータスのようなもの。その側面ごとに最適化されたUIを設計しようするのがUI Stack の考えです。 Scottさんが紹介しているUI Stackは5つ。 ※図はScottさんのページから引用 ・Blank State(空っぽの状態) ・Loading State(ローディング状態) ・Partial State(部分達成状態) ・Error

配達遅延:Uber Eats配達員が石野さんのつけ麺を捨て置いたトラブルについて|新米Uber Eats配達員|note UberEatsで1ヶ月働いたので配達員の立場から見た良い点と悪い点を書いて ここに来てUber Eatsに関するあれやこれやが話題になっている。僕はUberという会社そのものを疑っていたので利用したこともないし、働くこともないだろうと思う。ただ2年前イギリスにいたときにはみんなナチュラルに使っていて、日本でもようやく浸透してきたんだなあと感慨深く思った。 ところでこの手のwebサービス的なものというのは、人間同士の信頼というものを限りなく存在しないものとして取り扱っていて、なんだったら信頼構築をゼロとしてサービスを作っている。これはどういうことかというと、本来なら僕らは顔を見知った人同士で話したり、行動をともにしてお互いの信頼を勝ち取っていく。あいつは信頼できる、とい
10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由 10年以上運用されているサービスには、さまざまな技術的な負債が発生しています。今後の継続的な改善のため、いったん新規開発を止めて4年かけて全面的なリニューアルを実施した「はてなブックマーク」の開発者に、プロジェクトの課題や解決する手法などを聞きました。 改善1つに数カ月かかるなら全てを書き換えられないか 2000年代にトレンドだった開発手法の負債 過去の開発意図を探る考古学的手法 データセンター移行も見据えて刷新しよう ドメインモデル設計とScalaとマイクロサービス化 コアロジックにはScalaを採用 きちんとしたドメインモデルによる設計と実装を継続したい 段階的なリリースとデータの移行という2つの大きな課題 求められる機能に沿ったデータベーススキーマに再構築 新旧の2システムを維持しながら

この記事はMERPAYTECH OPENNESS MONTHの15日目の記事です。 こんにちは。メルペイのPayment PlatformチームでPaymentServiceの開発を担当するエンジニアの @foghost です。 メルペイではマイクロサービスのアーキテクチャで決済システムを開発しています。その中でPaymentServiceは決済トランザクション管理の基盤サービスとして、下位層のサービス(外部サービスも含め)が提供する各種決済手段を利用して、上位層のサービス(メルカリ、NFC,コード払いなど)に必要な決済フローを共通APIとして提供しています。PaymentServiceが提供する決済処理に複数のサービスを跨いでお金の動きを正確に管理する必要があるので、作り始めた頃から決済トランザクション管理を最も重要な課題として、サービスを跨いでもデータの整合性が取れる仕組みを作ってき

本当に通ったら一大事なので、このような仕組みを設計する段階でどうにかして防いでいる訳だが、どのようにやっているのだろう。その防止策の1つに「チェックディジット」というものがある。 まず、完全にランダムな文字列にすると困る あなたがライブを主催することになり、0〜9の数字からなる16桁のシリアルコードで抽選を行うとしよう。あなたならどのようにコードを作るだろうか? 単純に考えれば、16個の枠それぞれに0〜9の数字を1つずつランダムに選べばいい(つまり、0〜9の乱数を16個並べればいい)のだが、完全にランダムだと不都合が多い。例えば、ランダムだと限りなく似ているコードが生成される可能性がある。 つまり、 1234 56789012 34561234 5678 0012 3456 のような、1カ所しか変わらない2つのシリアルコードが生まれ得る。1つ目のシリアルコードを持っている人が、うっかり数

2018年11月2日に行われたAWS Dev Day Tokyo 2018での講演「マイクロサービス化デザインパターン」の資料です。
チャーリーです。 追記:ビジネスモデルを図解できるツールキットを販売中です。この記事にあるような図解を自分でもやってみたいという方はぜひ。 もう2018年も1/4が終わったというにわかに信じがたい状況ですが、ビジネスモデルを図解し続けたものがたまってきたのでここらで13個一挙公開します。 - 目次 -俺のフレンチ サマリーポケット 未来食堂 Cansell プチローソン Unipos SCOUTER ポプテピピック ZOZOSUIT Optoro Fundbox PillPack Farmers BusinessNetwork 100の事例を図解した「ビジネスモデル2.0図鑑」という本を発売しています(本記事の事例ふくむ)。予約開始と同時にnoteで全文無料公開という試みをやっています。本記事に興味を持ったらそちらもどうぞ! 俺のフレンチ俺の株式会社は2012年創業、あのブックオフの創業

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この記事はAndroid Advent Calendar 2017 7日目の記事です。 当初は設計の話を書くつもりだったのですが、 明日のShibuya.apkで話すネタに困ったので使い回しの効く話題にしたかった その設計が期待通りのものになっているかどうかの検証ができていないので、開発全般のお話になりました。 設計の話題についてはまたどこかでお話できるかなと思います。 以下、エモい話です。 対象読者 この記事は以下のような方を対象として書いている…つもりです。 職業Androidエンジニア 自社サービスの開発に携わっている、またはア

CAMPHOR- Advent Calendar 2017 の 1日目 の記事です。 CAMPHOR-で運営メンバーの @tomokortn です。今日22歳になりました 大学2回生のときにひょんなことからデザインを始めて、何度かロゴの受託制作をしました。 今までの知見をまとめて、「ノンデザイナーでもできる!イケてるロゴの作り方」としたいと思います。 ハッカソンやサービス起案の場など、今チームにデザイナーいないけどシュッとロゴ作んないといけないの!って時にお役立てください。 いいロゴってどんなもの?Evernoteのロゴの由来をご存知ですか? 象は「Elephants never forget」ということわざに由来します。 そして象の耳がちょっと折れているのはnoteを表しています。 「すべてを記憶する」を掲げるノートサービスであるEvernoteらしいロゴで、大好きです! サービスを象

http://itpro.nikkeibp.co.jp/atcl/column/14/346926/101101158/ Q1.役所の仕事なんて全国でほぼ一緒なのに、なんで自治体ごとに別のシステムを作るの? A1.地方自治体の事務や財務について法律で決まっているのは大枠だけだよ。 それを実務≒内部規定に落とし込むのは各役所ごとなので大枠は似てても実務プロセスは全然各役所で違うよ。例えば同じ業務でも独自の語彙があったり、下手すると同じ語で市町村ごとに意味が違ったりするよ。 Q2.なんで新規で作らないの? A2.80年代ぐらいにやったよ。その結果が政令市クラスに残ってて今回京都市が更新しようとしてるような、メインフレーム上のシステムだよ。 Q3.メインフレーム(汎用機)って何? A3.みんなが使ってるWindowsとかLinuxとかのOSがなかった時代のコンピュータだよ。IBMとかがベンダーご

同業者の皆様、いつもお世話になっております。 ケイワイシステムは、これまで各種基板スクラップを専門に、 買取り業務を行って参りました。 これまでは非鉄金属などのスクラップを集めていた業者様。 この機会に御社でも基板スクラップを集めてみませんか? ご興味がございましたら、お気軽にご一報ください。 集めて頂いた基板スクラップの買取はもちろんのこと、 回収に関するアドバイスなども行っておりますので、 お気軽にご相談ください。
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?MySQLのint型は符号付きで -2147483647〜2147483647 の範囲をサポートし、レコードを記録する際にこの範囲を超えて記録しようとするともちろんエラーとなります。 これは、長い運用の末にデータが膨大になり、ついにintのサポート範囲が枯渇寸前となった話です。 方針DBはAWSAuroraを使用しており、アプリケーションはRailsで構築されています。RailsのMigrationはデフォルトでidカラムをAUTO INCREMENTのint型で作成します1。サービスの特徴としては他のサービスと比較すると高トラフィ

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く