タグ

goに関するtezu35のブックマーク (29)

  • メルカリ ハロの技術スタックとその選定理由 | メルカリエンジニアリング

    こんにちは。メルカリ ハロのSoftware Engineer (Engineering Head)の@napoliです。連載:Mercari Hallo, world! -メルカリ ハロ 開発の裏側-の2回目を担当させていただきます。 2024年3月上旬にメルカリ ハロという新しいサービスが公開されました。メルカリ ハロは好きな時間に最短1時間から働ける「空き時間おしごとアプリ」です。 この記事ではメルカリ ハロを作るにあたり、どういった技術スタックやアーキテクチャを選定したのか、さらにその背景と意思決定をご紹介したいと思います。 この記事で得られること メルカリ ハロで採用されている技術スタックやアーキテクチャの全体像 その意思決定の理由とプロセス これから新規サービスを立ち上げるうえでのヒント 主な技術スタック メルカリ ハロで利用されている主な技術スタックは以下のとおりです。 バッ

    メルカリ ハロの技術スタックとその選定理由 | メルカリエンジニアリング
  • Go言語でモジュラーモノリスのアプリ開発をする際のノウハウを公開 - RAKUS Developers Blog | ラクス エンジニアブログ

    はじめに こんにちは、imamoto です。 今年もプロ野球が開幕し、すっかり春だなぁと感じる今日この頃です。 さて今回は、Go言語でのWebアプリ開発をした際のチーム内のノウハウを、GitHub上で公開してみた話を書いていきたいと思います。 目次 はじめに 目次 公開したGitHubリポジトリの紹介 資料の構成について モジュラーモノリスで実装した背景 ノウハウ公開に至った経緯 おわりに 公開したGitHubリポジトリの紹介 私はSRE課に所属しているのですが、SRE課ではGo言語でWebアプリを開発することが多いです。 独立した機能を持った複数のGo Moduleを、1つのモノリスなアプリケーションとしてデプロイする、 いわゆる モジュラーモノリス という設計でのアプリ開発にもチャレンジしているのですが、 その開発中にチームとして蓄積した実装ルールやノウハウのうち、汎用化できそうな部分

    Go言語でモジュラーモノリスのアプリ開発をする際のノウハウを公開 - RAKUS Developers Blog | ラクス エンジニアブログ
  • マイクロサービス化するならリビルドで!ビジネスロジックをGoで書き直してわかったこと - MonotaRO Tech Blog

    この記事では モノタロウがGoとprotobufで進める爆速マイクロサービス開発とそれを支えるプロセス - MonotaRO Tech Blog のうち、主にアーキテクチャにおける詳細について紹介します。 自己紹介 マイクロサービス化について 課題を認識する スコープと技術選定 ゴールイメージを共有する 既存コードから分かった問題点 曖昧なデータ構造 処理フローの混在 アドホックなデータ取得 効果的な改善を行う 処理フローを分割する N+1問題とロジックの独立性を考慮した設計 安全に移行する 実行時のデータを取る 新旧比較による検証 まとめ 自己紹介 藤 洋一 プラットフォームエンジニアリング部門 CTO-Officeグループ AVLチーム 楽天、SaaSベンチャーを経て、モノタロウに入社してマイクロサービス化にとりくむエンジニアの話 2019年5月入社。商品検索基盤のマイクロサービスと

    マイクロサービス化するならリビルドで!ビジネスロジックをGoで書き直してわかったこと - MonotaRO Tech Blog
  • Goで複雑めなmockをいい感じにする - Nature Engineering Blog

    Nature エンジニアの的場です。これは第2回 Nature Engineering Blog 祭14日目のエントリです。 表題の通り、外部へのAPIリクエストをそれなりにする機能をテストするときにそのmockをどうやるのがいいかなと自分なりに試行錯誤した結果、今はこうやってますと言う内容を共有しようと思います。 TL;DR テストケース単位で必要十分なレスポンスを返す小さなmockを都度作っていくのが調子が良い。 packageはgockを経て自作のものを使うように。 mockについて mockと言う用語、エントリでは都合の良い値を返す仮想API、またその設定をすること くらいの意味合いで捉えていただければと思います。 背景 外部APIのmockが必要になるのはバックエンド開発をしていればそれなりに遭遇するケースですが、自分の経験上ではテストスイートの頭などでちょっとしたmockを作

    Goで複雑めなmockをいい感じにする - Nature Engineering Blog
  • ウン十万接続のECSサービスを平和にアップデートしたい - Nature Engineering Blog

    こんにちは大塚(@maaash)です。7月からCTOに復帰しました。引き続きよろしくお願いいたします。 これは第2回 Nature Engineering Blog 祭11日目のエントリです。 昨日はファームウェア・エンジニアの村田さんによる Matterでやりたかったけどできなかったこと - Nature Engineering Blog でした。 今日のお話は、話題の新製品Remo nanoやMatterとは関係ありません。 背景 先週、黒田さんが ウン十万接続のALB SSL証明書を平和に更新したい - Nature Engineering Blog を書いてくれました。 その話は ALBを二台用意して緩やかに接続を移行するようにしたら、大変平和になって僕もみんなもハッピーになった。 という話でした。ALB blue-green deploymentを使うと、ウン十万のRemoたちが

    ウン十万接続のECSサービスを平和にアップデートしたい - Nature Engineering Blog
    tezu35
    tezu35 2024/04/14
  • Go 製の認可サーバー、IdP 実装用ライブラリ Fosite

    記事は Digital Identity技術勉強会 #iddance のアドベントカレンダー20日目の記事です。 ory/fosite について ory/fosite: Extensible security first OAuth 2.0 and OpenID Connect SDK for Go. OAuth 2.0/OIDC の 認可サーバー、IdP 実装のための Go のライブラリです。 エンドポイントそのものは直接実装せず、プロトコルに関連するリクエストを http のハンドラー経由でライブラリに渡してあげるとパースしたり必要なものを永続化したりレスポンスを生成してくれます。 Motivation によると、そもそも Hydra 用のライブラリとして開発されたようです。 Hydra については以前 Hydra による OAuth 2.0 の認可サーバー/ OIDC の IdP

    Go 製の認可サーバー、IdP 実装用ライブラリ Fosite
    tezu35
    tezu35 2024/03/23
  • How to Rate Limit HTTP Requests - Alex Edwards

    If you're running a HTTP server and want to rate limit user requests, the go-to package to use is probably Tollbooth by Didip Kerabat. It's well maintained, has a good range of features and a clean and clear API. But if you want something simple and lightweight – or just want to learn – it's not too difficult to roll your own middleware to handle rate limiting. In this post I'll run through the es

    How to Rate Limit HTTP Requests - Alex Edwards
    tezu35
    tezu35 2023/12/06
  • Go言語のデータベース用のライブラリを比較する | wapa5pow blog

    GoでCloud SQLを使うことになったのですがライブラリが複数ありどのライブラリを選んでいいか迷ったので比較してみます。 ライブラリを導入する上でほしい機能は以下です。 migration: Railsみたいにマイグレーションファイルがかけてマイグレーションやロールバックがしたい transaction: トランザクションが書きやすく直感的 orm: データベースへのクエリを抽象化でき、Goのstructへのマッピングも可能 connection pool: データベースへのコネクション数を制限できる multiple environment support: 番・ステージング・開発環境など複数の環境で設定Sを使い分けられる TL;DR スキーマを一度だけ書き、Goのstructもそれから生成してほしい場合は、マイグレーションをk0kubun/sqldef, ORMをvolatile

    Go言語のデータベース用のライブラリを比較する | wapa5pow blog
    tezu35
    tezu35 2023/11/20
  • Go 1.21 で追加された sync パッケージの新機能について|fukurou_dev

    はじめに皆様、こんにちは。バックエンドエンジニアの栄です。 先日、Go 1.21 がリリースされました。 今回のリリースは、新しい組み込み関数の追加や既存パッケージの更新が比較的多いリリースでありました。 記事では、私が特に興味深いと感じた sync パッケージの変更点を取り上げてみたいと思います。 変更点サマリー下記の3つの関数が新たに追加されました。 sync.OnceFunc sync.OnceValue sync.OnceValues これらの関数は sync.Once 構造体の一般的な使用方法を関数化したものとなります。 sync.Once とは追加された三つの関数を理解するには、sync.Once 構造体の概要について知っておくことが重要です。 sync.Once 構造体には、任意の操作を一度だけ行う為の機能として Do メソッドが実装されています。 Do は引数として、引数

    Go 1.21 で追加された sync パッケージの新機能について|fukurou_dev
    tezu35
    tezu35 2023/11/02
  • Prefer table driven tests | Dave Cheney

    I’m a big fan of testing, specifically unit testing and TDD (done correctly, of course). A practice that has grown around Go projects is the idea of a table driven test. This post explores the how and why of writing a table driven test. Let’s say we have a function that splits strings: // Split slices s into all substrings separated by sep and // returns a slice of the substrings between those sep

    tezu35
    tezu35 2023/10/19
  • Illustrated Guide to SQLX

    Illustrated guide to SQLX sqlx is a package for Go which provides a set of extensions on top of the excellent built-in database/sql package. Examining Go idioms is the focus of this document, so there is no presumption being made that any SQL herein is actually a recommended way to use a database. It will not cover setting up a Go development environment, basic Go information about syntax or seman

    tezu35
    tezu35 2023/10/18
  • project-layout/README_ja.md at master · golang-standards/project-layout

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    project-layout/README_ja.md at master · golang-standards/project-layout
    tezu35
    tezu35 2023/10/15
  • Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ

    はじめにTIG真野です。育休明けです。 フューチャー社内のタスクランナーはmakeやTaskなど複数の流派があり、チームによって使い分けられています。個人的にはmakeで良いんじゃないかと思っていますが、Taskも良いですよね。 makeは細かい記法をいつも忘れる+調べるとC言語向けの情報が出てきて脳内変換に手間を感じたため、makeを用いてWebバックエンドアプリをGoで開発するということをテーマに、役立ちそうな情報をまとめます。 なお、今記事におけるmakeは、GNU Makeを指します。バージョンは以下で動かしています。 MakefileのためのEditorConfigMakefileのインデントはハードタブである必要があります。誤りを防ぐためにもEditorConfigを設定しておくと良いでしょう。 makeは通常、Makefileという名称をデフォルトで認識しますが、同一フォルダ

    Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ
    tezu35
    tezu35 2023/10/12
  • Go 1.21連載始まります&slogをどう使うべきか | フューチャー技術ブログ

    Go 1.21は久々の新しいライブラリが大量追加だったり、既存のパッケージへの改良の多数行われたり、あたらしい組み込み巻数が追加されたりで記事などが書きやすいリリースです。残念ながら、フューチャーで一番Goを使っているプロジェクトが山場で今回はちょっと書き手が少ないのですが、今回もお付き合いいただけるとうれしいです。 1.21の更新内容のまとめダイジェスト 1.18の時に入るといって直前にキャンセルになった、ジェネリクスのためのパッケージslices/mapsの復活 新しい組み込み巻数のmin/max/clearの追加 言語仕様の強化 パッケージの初期化順序が仕様化 型推論ちょっぴり強力に 次期バージョンで入る予定のループ変数が共有されちゃうバグ対策が実験実装 ランタイムの性能改善(いつもの) 深いスタックオーバーフロー時のトレースが見やすく(最新100ではなく、最新50と一番外側の50表

    Go 1.21連載始まります&slogをどう使うべきか | フューチャー技術ブログ
  • Goでテストのフィクスチャをいい感じに書く | メルカリエンジニアリング

    Merpay Tech Openness Month 2022の6日目の記事です。 こんにちは、Merpay Credit Design Teamでバックエンドエンジニアをしている@youxkeiです。 テストを書く際、その前提条件としてデータベースの状態をフィクスチャとして準備して、データベースにデータを投入することがよくあります。このフィクスチャはYAMLなどの外部ファイルに書かれることもありますが、この記事ではテストコード上にGoで記述する方法を考えていきます。 この記事では、データベースはリレーショナルデータベースを想定していて、具体例として架空の図書館蔵書管理システムのデータベースを使っています。 素直にモデルを使う 多くの場合、以下のようにデータベースのそれぞれのテーブルに対してモデルが定義されています。 package model import ( "time" ) type

    Goでテストのフィクスチャをいい感じに書く | メルカリエンジニアリング
  • entのDBマイグレーションを試みる|すずき

    Coolなmanagement UIがあったりなかなかの魅力を誇るツールだ。 entとAtlasこの二つがどう絡み合うか。というとentはent上のSchema定義からDBが取るべきSchemaをGoのソースコードで管理している。 公式のexampleから引っ張ってくると↓のような具合だ。 AtlasはHCLでDB Schemaを定義していき、DBへ差分を反映していくスタイルのようだが、entを使っているとDB SchemaをHCLで書く必要すらないとうわけだ。 https://entgo.io/ja/docs/migrate#atlas-diff-and-apply-hooks にあるようにAtlasとのintegrationを有効にしておくとAtlas WayでmigrationのHookを実装できるようだ。 Hookを実装することでmigrationのロジックを自由度高めにカスタマイ

    entのDBマイグレーションを試みる|すずき
    tezu35
    tezu35 2023/09/26
  • 最近のGoのOpenAPI Generatorの推しはogen - ぷらすのブログ

    はじめに OpenAPIyaml ファイルから Go のコードを生成する OSS ツールは何種類か存在します。 よく使われるのはOpenAPITools/openapi-generatorやdeepmap/oapi-codegenでしょうか。 ググると日語の記事もたくさん出てきます。 こんにちは、バクラク事業部 バクラクビジネスカード開発チームでEMTechLeadを担当している高江 @shnjtk です。 今回は、openapi-generator を使ってOpenAPI定義ファイル(OpenAPI Specification)からGoのコードを生成する方法と、運用時のTipsについてご紹介します。 背景 バクラク事業部では、スキーマ駆動開発によりDBGraphQLのスキーマ定義、OpenAPI定義ファイルなどから自動生成されたコードを積極的に利用する開発スタイルが採用されて

    最近のGoのOpenAPI Generatorの推しはogen - ぷらすのブログ
  • goquを駆使してgoでSQL構築も構造体マッピングもRDBテストもやる - エムスリーテックブログ

    【Unit4 ブログリレー6日目】 こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 最近まで開発していたm3ラウンジでは、goからRDBを利用していました。 m3ラウンジでは、SQLの組みやすさやテストのしやすさの観点で検討した結果、goquを採用しましたので、 そこで得られた知見とその実装例を紹介します。 これから試してみる方(と将来m3ラウンジの開発に新たに入ることになったメンバー)の参考になるように、サンプルコードも説明も多くなってしまいかなり長いです。 お時間ある時にお読みいただければ。 名古屋城は、日の城のひとつ。尾張国愛知郡名古屋(現在の愛知県名古屋市中区丸・北区名城)にある。文には特に関係ありません。 m3ラウンジ goqu 実例 modelの構造体 mapper mapperの実装 goquのSQLの結果から構造体へのマッピング

    goquを駆使してgoでSQL構築も構造体マッピングもRDBテストもやる - エムスリーテックブログ
    tezu35
    tezu35 2023/08/30
  • Big Sky :: Goプログラマであるかを見分ける10の質問

    下記質問にそれぞれ50文字以内を目安に簡単に説明すること。 パッケージ内に定義した関数を外部に公開するにはどうすれば良いか? 非同期に処理を行う為の命令は? 関数を抜けた際に処理を実行するにはどうするか? goroutineの同時実行数を変更するにはどうするか? コンパイラやリンカが8g/6g/5g、8l/6l/5lという名前になっている理由は? Goのガベージコレクションの実装は一般的に何と呼ばれている類か? レシーバがnilの場合にメソッドを呼び出すと何が起きるか? 可変個引数はどの様に定義するか? 関数内で定義されるローカル変数のアドレスを戻り値として外部から参照するとどうなるか? interfaceとstructの違いは何か? panicを補足して強制終了させない為にはどうするか? 答え パッケージ内に定義した関数を外部に公開するにはどうすれば良いか? 関数名の先頭を大文字にします

    Big Sky :: Goプログラマであるかを見分ける10の質問
    tezu35
    tezu35 2023/08/16
  • 「Go言語で楽しくなるシステム開発:基礎から実践テクニック」mattn × 渋川よしき | Forkwell Press | フォークウェルプレス

    【ちょっと宣伝】上級エンジニア特化のキャリア支援サービスをはじめました! 市場の変動がキャリアへの不確実性をもたらす昨今、これまで以上にエンジニアに寄り添いたいという想いから、上級エンジニア特化のキャリア支援サービスをはじめました。スポーツ選手のエージェントのようにエンジニアの立場で次のキャリアを提案いたします。一般的な転職エージェントのように募集中の案件を紹介するだけでなく、あなたの理想のキャリア実現に向けて、ニーズがありそうな企業へ交渉し、望ましい案件を創出する働きかけも行います。無料で利用できますので、お気軽にお申し込みください。

    「Go言語で楽しくなるシステム開発:基礎から実践テクニック」mattn × 渋川よしき | Forkwell Press | フォークウェルプレス
    tezu35
    tezu35 2023/08/09