タグ

ブックマーク / qiita.com (269)

  • マイクロサービスの Saga パターンについて - Qiita

    以前の記事で『Microservice Patterns』について要約したが、その中の一つの Saga パターンについて、もう少し詳しく掘り下げてみる。 どういう文脈で Saga パターンを使うか? 各サービスがそれぞれの Bounded Context (整合性の境界)で自前のデータストア(Database per Service)を持っているマイクロサービスアーキテクチャで、複数サービスにまたがるワークフローのデータ整合性を維持したい。 どういう制約のもとで Saga パターンを使うか? 以下のような事情で、分散トランザクションは使いたくない。 モダンでメジャーな NoSQL やメッセージブローカではサポートされていないものが多い。 CAP 定理の認知度が高まって、Consistency を絶対視する風潮が見直され、Availability をより重視するシステムも増えている。 分散ト

    マイクロサービスの Saga パターンについて - Qiita
  • Goでサーバー開発するときのMakefileを晒してみる - Qiita

    はじめに この記事は、Go3 Advent Calendar の4日目の記事です。 Goで開発する際にはテストの実行やlintの実施といった細々としたコマンドを Makefile にまとめることが多いと思います。 これにはコマンド入力の手間を省くのももちろんですが、チーム内でコマンド実行の方法を統一するという意味もあります。「手元でのテストはReadmeに書いてある通りに実行してね」と伝えるよりも、Makefileにまとまってる方が親切です。 ということで、何番煎じか分かりませんが今回は業務で使っている Makefile を晒してみたいと思います。 ちなみに主に以下のツールを利用しています。 パッケージ管理: dep 自動リロード: realize DB migration管理: goose setup: go get -u github.com/golang/dep/cmd/dep go

    Goでサーバー開発するときのMakefileを晒してみる - Qiita
  • REST APIの設計で消耗している感じたときのgRPC入門 - Qiita

    REST APIによる設計 最近のシステムは様々なデバイスやスケーラビリティを重視するため、各システムを分割し軽量なAPIで連携するマイクロサービス的なアーキテクチャスタイルが増えてきています。 そして、そのAPI連携で広く採用されているのが、REST APIです。 しかし、こうした設計を行っていくには、適切に考慮、選択しなければならないことも多くあります。 URL、パラメータ、エラーなどの設計 各言語ごとのライブラリや、サーバ、クライアントの選定、設計 認証、認可 ドキュメント管理 ユニットテスト、インテグレーションテスト、モック、Consumer-Driven Contracts 開発用ツール 絶対的スタンダードがない状況下で、こういった問題はシステムやメンバーが増えるにつれ複雑化していき、設計や管理、その仕組み作りに時間を取られ、来の目的となるべき機能開発の時間を失っていくことにな

    REST APIの設計で消耗している感じたときのgRPC入門 - Qiita
  • 納期守れない系エンジニアが遅延無しでちょっと頼りにされるまでに学習したこと - Qiita

    初めに この記事は、私が納期をまともに守れなかったころから、 遅延しなくなり後輩の遅延を手助けするまでに 学習したことや心がけていること及び失敗談を記述します。 暇つぶしに読んでいただければ幸いです。 前提:どれぐらいできなかったか ・イケると思った機能が1週間遅延して更にバグまみれ。 ・プロトタイプ版開発に時間をかけすぎて仕様変更によって結局遅延。 ・ユーザーが欲しいと思った機能が、完成とほぼ同時に不要になってしまった。 この記事の内容は、主観と経験に基づくものが多いです。筆者はよく言っても中堅エンジニア なので、記述内容が必ず参考になるとは限りません。 勉強した事 交渉&見積もり編 ・正確な工数見積もりは「不可能」である事を認識する。 実際に機能を作る前には、「だいたいどれくらいでできるのか」という事を絶対に確認されます。 その時に、過去の経験からn日でできるな…と考えても、それはたい

    納期守れない系エンジニアが遅延無しでちょっと頼りにされるまでに学習したこと - Qiita
  • オワコン大手SIerに学ぶアンチパターン - Qiita

    軽い読み物としておもしろおかしく読んでください。 はじめて社外の人の仕事を見た 今まで社内の成果物しか目にしてこなかったのですが、ふとしたきっかけで外部ベンダーが作ったシステムを移行することになりました。 会社名を見て、よく知った会社でちょっと安心しました。 「ここなら設計書とかもきちんとしてるだろう、多少古臭くても堅実にやってるんじゃないかな」って思ってました。ええ。 実態は全然違った とんでもない量のExcel設計書として渡されました。 さすがに設計が専門だけあって設計書の量はすごいなぁ。と思って読んでいるといろいろ察してきました。 正直、「オワコン大手SIer」と呼ぶしかありません。設計しかできないと思っていたのに、何もできないなんて・・・ 実際に自分が見た「オワコン大手SIer」のアンチパターンをご紹介していきます。 自分が多く当てはまっている場合は今すぐ直してください。移行する

    オワコン大手SIerに学ぶアンチパターン - Qiita
  • バッチ処理について考える - Qiita

    TL;DR ひとくちにバッチといっても色々ある 夜間バッチをもう作るな オンラインバッチはSQL以前にDB設計がんばれ はじめに Twitterのタイムラインで以下のようなツイートが回ってきました。 バッチ処理をみんな舐めてかかったり、ショボイとか思ってる人多い印象なんだけれども、数十万~数千万件規模のデータを処理したことあるのかな。テンプレ通りのコードじゃ動かないよ?ネットににも答え載ってないよ?低レイヤも意識しないと動かないよ? 2020年1月10日 ツイートされたわだっしーさんの意図がどこにあるかは確認してないですが、極限の世界でテンプレート的な処理では対応出来ないのはあるよな、と思いつつもある程度はバッチの作法としての書き方があると思っています。 このツイートとその関連ツイートを読みながら、そういえばバッチ処理に関して書いてある記事はあまり見ないなぁ、とおもったので他のネットや

    バッチ処理について考える - Qiita
  • [和訳] Dropboxアカウントのせいで胃潰瘍になった - Qiita

    こちらのReddit投稿 (https://www.reddit.com/r/sysadmin/comments/eaphr8/a_dropbox_account_gave_me_stomach_ulcers/) の和訳記事です。番環境でやらかしかった人シリーズが盛り上がっていたので波に乗って(?)Twitterにヤバすぎる恐ろしい話が流れてきたのをすかさず和訳してみました。やらかしちゃった人というよりはやらかされちゃった人目線ですがいずれにせよそこら辺の怪談話よりよっぽど怖いです。 Dropboxのアカウントのせいで胃潰瘍になった。 皆は誰もが触れたがらない、会社を紐やガムやクリップでつなぎとめている「例のアレ」を見つけたことってある?そういうのって往々にして大型連休前の金曜午後4:45に落ちるし、般若のような様相を呈した上司が「このままだと第二のスターリングラード攻防戦が勃発するぞ

    [和訳] Dropboxアカウントのせいで胃潰瘍になった - Qiita
  • RESTful API のページネーションで考えるべきこと - Qiita

    ※追記:パフォーマンス比較ですが、「インデックスちゃんとはったら良くね?」との指摘がありました。その通りです。申し訳ありません。 RESTful な API を作る時のページネーションのプラクティスが Django RESTful Framework の Pagination に良くまとまっているので、 Django 以外の別の実装のためにも汎用化したい。 レスポンスの表現方法 レスポンスで次のページを示す方法には以下の方法がある。 JSON や XML のレスポンスに含める Link ヘッダに URL で指定する RFC 8288 GitHub REST API v3 Traversing with Pagination HTML なら link タグが使えたりもする (HTML Living Standard - 14 July 2020 4.6.6.24: Sequential li

    RESTful API のページネーションで考えるべきこと - Qiita
  • ソシャゲエンジニアの自分が開発に必須だなと思った知識(MySQL編) - Qiita

    この記事の目的 自分は、とある会社様の元でソシャゲAPI 開発をさせていただいています。 ソシャゲは、リリース時やイベント時などに集中アクセスされやすく、負荷軽減の知識がない状態で開発を行ってしまうと、運用時に緊急メンテ祭りになりやすいジャンルかなと思っています。 これまで培ってきた MySQL の知識ですが、脳内メモリ量の関係上、暗記できないのでメモしておこうというのが主目的です。 ここ数年ほどソシャゲ開発しかしていないため、偏っている感がある内容ですのでご注意ください。 概要 ストレージエンジンは InnoDB。メインで扱っている MySQL バージョンは 5.6。 記事の内容ですが、これらのキーワードを見て、おおよそ分かる方は読む必要はないかと思います。 インデックス系 クラスタインデックス カバリングインデックス EXPLAIN で注意するべき値 トランザクション系 MVCC

    ソシャゲエンジニアの自分が開発に必須だなと思った知識(MySQL編) - Qiita
  • Java11のSpringBootのプロジェクトからからMySQL8へ接続した時に発生した問題の解決 - Qiita

    Java11のSpringBootのプロジェクトからMySQL8へ接続した時に発生した問題の解決と、Windows10でのMySQLの操作について 環境 Windows10 MySQL 8.0.15(記述時点の最新) Scoopによるインストール1 Java11(OpenJDK11.0.11-28,11.0.2-9)でSpringBootを使用してMySQLへの接続を試した mysql.ini内の[mysqld]の編集 default-time-zone サーバー全体のデフォルトのタイムゾーン。 デフォルトのタイムゾーンを指定していないとJDBCからの接続の際にエラーが発生2する。 タイムゾーンはデフォルトではUTCからの時差の指定でないと設定できない模様で、日(JST)の場合は+9:00と設定する。 collation_server サーバー全体の照合順序。MySQL8以降デフォルトの

    Java11のSpringBootのプロジェクトからからMySQL8へ接続した時に発生した問題の解決 - Qiita
  • 【未経験でも挫折しない】40時間でAWS認定ソリューションアーキテクトアソシエイトを取得する方法 - Qiita

    クラウドって何? 「クラウド触りたいけど、どうやったらいいのか分からない」 「色んなサービスあるけど、何が良いの?何ができるの??」 「いや、学習時間ないし・・・」 そういう方にやってみて頂きたい!! そういう想いで書いていますが、クラウドを解説しているわけではありません。 この教材で、こんな気持ちで、このやり方でやれば、資格とれるくらいの知識と経験が積めますよというものです。 方向性が決まってるのでそれなりの気持ちで挑めば、挫折することなく走り切れると思います。 (知識と経験から、自宅・業務の環境改善にも繋がればいいなくらいの軽い気持ちが◎) AWSとは Amazonが提供しているクラウドサービスです。(そのまま) サーバー等はAmazonが管理するので、そのサーバー上で提供しているサービスを自由に使ってね。みたいなイメージです。 もちろんサービスなのでお金はかかりますが、無料利用枠とい

    【未経験でも挫折しない】40時間でAWS認定ソリューションアーキテクトアソシエイトを取得する方法 - Qiita
  • SpringBootで作ったRestAPI/Webアプリのテストを書いてみた - Qiita

    前回のエントリ「SpringBoot+Doma2+Gradleを試してみた。」のテストを書いてみたので公開してみる。 RestAPI → RestAssured Webアプリ → Geb もちろん題材は「はじめてのSpring Boot」にある顧客管理システムです。 ソースコードはこちら。 https://github.com/nyasba/domaboot RESTAPI部分 ここはに出てくる内容とほぼ同じです。 準備 rest-assuredをgradleの依存関係に追加するだけです。

    SpringBootで作ったRestAPI/Webアプリのテストを書いてみた - Qiita
  • 【個人開発】Vue.jsとFirebase、Yahoo YOLP(地図)を使うとあっという間にサービス作れるんだなぁ... - Qiita

    個人開発Vue.jsとFirebase、Yahoo YOLP(地図)を使うとあっという間にサービス作れるんだなぁ...JavaScriptYahooVue.jsFirebase個人開発 タイトルままですが... 私は非喫煙者なんですが、ネットニュースで禁煙な店舗を探せるという某サービスが紹介されてました。 ほ〜と思ってサイトに行ってみると登録店舗が600ちょいしかありませんでした... なんじゃこりゃ?と...なら自分で作ってみようかと金曜日の夜からこの週末を使って空き時間で禁煙なお店を検索できるサービスを作ってみました、実質8時間くらいかな? こんな短時間でサービス作れちゃうご時世なんですね、ほんとに驚きです。 利用したサービスやフレームワーク 簡単にリストアップします。どれも有名ですので個別には紹介しませんが。 Vue.js : 言わずとしれたUIフレームワークです。シンプルで好き

    【個人開発】Vue.jsとFirebase、Yahoo YOLP(地図)を使うとあっという間にサービス作れるんだなぁ... - Qiita
  • GCE の無料枠のサーバを立るときに、初見でハマりそうなところ - Qiita

    このスライドについて GCE の無料枠で遊ぶときに、やったほうがいいこととかを紹介します。 大体無料で運用できますが、1年間以上の長期運用をする場合はお金がかかるかもしれません。 やったこと お金をかけずに以下のことができるようにしてみました GCE のサーバインスタンスを立てた ドメイン取った HTTPS 対応した 概要 私が気づいた「気をつけたほうがいいこと」は、大まかにこんなかんじ。 最初に支払いのログの設定をする バケットとオブジェクトの命名ガイドラインに従う GCP の無料枠でなんとかなるようにする GCEのf1-microインスタンスを真にタダで使う方法 の問題 無料ドメインをとる DDNS(ieServer.net系)だと、証明書発行できない 1年間までなら無料で使えるドメインはある 有料でも、安めのドメインを買ったほうがいいかもしれない? Let's Encrypt の証明

    GCE の無料枠のサーバを立るときに、初見でハマりそうなところ - Qiita
  • Spring 4.3 キャッシュ関連の主な変更点 - Qiita

    今回は、Spring Framework 4.3の変更点紹介シリーズの第3回で、キャッシュ関連の変更点を紹介します。 シリーズ 第1回:Spring 4.3 DIコンテナ関連の主な変更点 第2回:Spring 4.3 データアクセス関連の主な変更点 第4回:Spring 4.3 JMS関連の主な変更点 第5回:Spring 4.3 Web関連の主な変更点 第6回:Spring 4.3 WebSocket関連の主な変更点 第7回(最終回):Spring 4.3 テスト関連の主な変更点 動作検証環境 Spring Framework 4.3.0.RELEASE Spring Boot 1.4.0.BUILD-SNAPSHOT (2016/6/11時点) Caching Improvements 今回は、キャッシュ関連(@Cacheable)の主な変更点をみていきます。 マルチスレッド下での同時

    Spring 4.3 キャッシュ関連の主な変更点 - Qiita
  • Spring Security 使い方メモ 基礎・仕組み - Qiita

    apply plugin: 'war' sourceCompatibility = '1.8' targetCompatibility = '1.8' compileJava.options.encoding = 'UTF-8' repositories { mavenCentral() } dependencies { providedCompile 'javax.servlet:javax.servlet-api:3.1.0' compile 'javax.servlet:jstl:1.2' compile 'org.springframework.security:spring-security-web:4.2.1.RELEASE' compile 'org.springframework.security:spring-security-config:4.2.1.RELEASE'

    Spring Security 使い方メモ 基礎・仕組み - Qiita
  • Goにはディレクトリ構成のスタンダードがあるらしい。 - Qiita

    参考URL 上記リポジトリにはGOプロジェクトでのスタンダードとなるディレクトリ構成の説明が書いてある。一つずつ見ていくことにします。 /cmd 一番メインとなるディレクトリ。このディレクトリの中にアプリケーションのエントリーポイントを作る。 注意点としてはmain.goに多くのことをさせないことである。各処理は基的に後述する/pkgなどで実装していくのでそれをインポートする形を取るべきだとある。 /internal /cmdで作ったエントリポイントで使いたいライブラリをおく。だが、このライブラリは各アプリケーション毎に書かれるものとなるので他のアプリケーションと共有するライブラリは置かない。そうゆうのをおくとすれば、後述の/pkgに置く。

    Goにはディレクトリ構成のスタンダードがあるらしい。 - Qiita
  • Spring Batch でメタテーブルを使いたくないのに使用されてしまう時はこうする - Qiita

    たいしたネタでもない上に詳細に機構を分かっているわけでもないのですが、たいしたことじゃないことほど一度ハマるとめちゃめちゃ時間を吸われるので、情報共有しておきます。 結論 さて、このようなタイトルの記事を読む方はきっと、Stack Overflowなどを読み漁っても良い解決策が分からず、ハマり続けて悲しい気持ちになっている方だと思います。ので先に結論から申し上げると、 DataSourceをBeanから抜いてください。 それだけです。 MapJobRepositoryFactoryBean では解決できない Spring Batchはその実行状態を保存しておく機能を持っており、それが有効になっていると接続先のデータベースに勝手にテーブルを作ってなんのジョブのどのステップが実行されたかなどを管理してくれます。リカバリする時はこれを見てよい感じに再実行などしてくれるそうです。 しかしさほどやや

    Spring Batch でメタテーブルを使いたくないのに使用されてしまう時はこうする - Qiita
  • JWTを利用したSpringアプリのAPI認証 - Qiita

    APIサーバとして作っているSpringBootアプリに認証の仕組みを入れようと思い、試行錯誤した内容をまとめておきます。 spring-securityを入れればよろしくやってくれるんじゃないの?と軽く思っていたのですが、思ったより長い道のりになってしまいました。 ID/PWでtokenを発行して、tokenを元にその他のAPIを呼び出せるか制御したい というのがやりたいことです。 いろいろ調べるとJWTという技術が使えそうだと判明して、「Implementing JWT Authentication on Spring Boot APIs」というサイトを参考に実装しています。 JWT(Json Web Token)とは 以下の3つのJSONデータを.で結合してできた文字列を、URLでも安全に送れるように暗号化したものです。これをtokenとして利用します。ジョットと読むらしいです He

    JWTを利用したSpringアプリのAPI認証 - Qiita
  • エンジニアらしくポルポテストに合格してみる - Qiita

    ポルポテストとは? 何としてもこの炎は守らなくては…… 24時間耐久する入団試験ゲーム「ポルポテスト」がリアルにキツい ポルポテストは、11月25日から大阪文化館・天保山で開催される「荒木飛呂彦原画展 JOJO 冒険の波紋」を記念して実施されるスマホ用Webゲーム。同作に登場するギャング組織・パッショーネの幹部“ポルポ”がジョルノに課した、「24時間ライターの炎を消さなければ合格」という過酷な入団試験を再現したもので、実際に24時間スマートフォンを落ち着けておく必要があります。 試験は端末を垂直に縦持ちしてスタート。ルールとしては、 一定角度以上傾けると失敗 スリープ画面になると失敗 ブラウザ上で「ポルポテスト」ページから別のページに移動したら失敗 「ポルポテスト」を開いているブラウザを閉じて、再度アクセスしても失敗 「ポルポテスト」を開いているブラウザアプリがバックグラウンドにいっても失

    エンジニアらしくポルポテストに合格してみる - Qiita
    mapserver2007
    mapserver2007 2019/03/05
    NGワード参考に。