Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goサーバをあえて不安定にするパッケージを作った話
Search
Hazumi Ichijo
January 31, 2019
Programming
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Goサーバをあえて不安定にするパッケージを作った話
Go(Un)Conference(Goあんこ)LT大会 5kg
https://gounconference.connpass.com/event/112942/
Hazumi Ichijo
January 31, 2019
More Decks by Hazumi Ichijo
See All by Hazumi Ichijo
RailsとRidgepoleの マイグレを120倍早くする
hazumirr
0
400
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
1.5k
病院の情報フローを理解して、 予約〜会計の見え方が変わった話
hazumirr
1
1.9k
Rubyのコード削除したい時 僕がやること
hazumirr
0
280
テーブル駆動テストと状態
hazumirr
5
2.2k
オンラインテストしようと思った その日に開始できる環境を目指して
hazumirr
0
1.1k
推薦によるプロダクト改善とマイクロサービスが噛み合った話
hazumirr
2
4.7k
ChatGPTで僕が知っていることまとめ
hazumirr
3
3.1k
プロダクトチームとどう 協業し分析環境を改善するか
hazumirr
2
1.6k
Other Decks in Programming
See All in Programming
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
240
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
690
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
310
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
4
1.9k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.9k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
200
Agentic UI
manfredsteyer
PRO
0
120
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
770
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
180
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
110
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Skip the Path - Find Your Career Trail
mkilby
1
140
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
280
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
160
The agentic SEO stack - context over prompts
schlessera
0
800
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
The untapped power of vector embeddings
frankvandijk
2
1.7k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Transcript
©2018 Wantedly, Inc. GoαʔόΛෆ҆ఆʹ͢Δ ύοέʔδΛ࡞ͬͨ 31.Jan.2019 - Hazumi Ichijo
©2018 Wantedly, Inc. ࣗݾհ Ұᑍ!IB[VNJSS!SFSPTU 4FSWFS4JEF&OHJOFFSJO8BOUFEMZ (P 3BJMT 3FBDUʜ ग़ւಓ
©2018 Wantedly, Inc. མͪͯͯྑ͍αʔϏε ϝΠϯͷαʔϏε Ϣʔβʔ
©2018 Wantedly, Inc. མͪͯͯྑ͍αʔϏε ϝΠϯͷαʔϏε Ϣʔβʔ མͪͯͯྑ͍αʔϏε ϝΠϯͷαʔϏε Ϣʔβʔ
©2018 Wantedly, Inc. མͪͯͯྑ͍αʔϏε ϝΠϯͷαʔϏε Ϣʔβʔ མͪͯӨڹ͕ग़ͳ͍Α͏ʹ͢ΔͨΊʹɺ $JSDVJU#SFBLFSͱ͍͏ͷ͕ଘࡏ͢Δ IUUQTHJUIVCDPNTPOZHPCSFBLFS
IUUQTHJUIVCDPNSVCZJTUDJSDVJUCSFBLFS
©2018 Wantedly, Inc. CircuitBreaker͕ຊʹ͏·͘ಈ͔͘ෆ҆ => ಈ͔͚ͩ͘γϡοͱ֬ೝ͍ͨ͠
©2018 Wantedly, Inc. Ͳ͏ͬͯෆ҆ఆʹ͢Δ͔ w ίʔυʹQBOJDͱ͔ΛೖΕΔʁ Ͳ͏͍ͬͨৼΔ͍Λ͢Δ͖͔ w
൪Λฦ͢ʁϨεϙϯεΛ͘͢Δʁ
©2018 Wantedly, Inc. Ͳ͏ͬͯෆ҆ఆʹ͢Δ͔ Ϣʔβʔ ϝΠϯͷαʔό͔Βݟ͑Δͷ Ϩεϙϯε͚ͩ IUUQH31$
©2018 Wantedly, Inc. Ͳ͏ͬͯෆ҆ఆʹ͢Δ͔ Ϣʔβʔ ͚ͩ͜͜ʹෆ҆ఆ͞Λ͍ΕΕ͍͍
©2018 Wantedly, Inc. Ͳ͏ͬͯෆ҆ఆʹ͢Δ͔ Ϣʔβʔ H31$*OUFSDFQUPS IUUQ.JEEMFXBSF
©2018 Wantedly, Inc. Ͳ͏͍ͬͨৼΔ͍Λ͖͔͢ https://engineering.linkedin.com/blog/2018/05/linkedout--a-request-level-failure-injection-framework -JOLFEJOͷ'BJMVSF*OKFDUJPO'SBNFXPSLͰ w &SSPS w %FMBZ
w 5JNFPVU ͷͭΛೖΕ͍ͯΔ
©2018 Wantedly, Inc. Ͳ͏͍ͬͨৼΔ͍Λ͖͔͢ https://engineering.linkedin.com/blog/2018/05/linkedout--a-request-level-failure-injection-framework -JOLFEJOͷ'BJMVSF*OKFDUJPO'SBNFXPSLͰ w &SSPS w %FMBZ
w 5JNFPVU ͷͭΛೖΕ͍ͯΔ ͦͷ͏ͪɺ&SSPSɾ5JNFPVU͕͋Εࢼͤͦ͏ɻ ߋʹɺͦ͏͍ͬͨৼΔ͍ϥϯμϜʹى͖ΔΑ͏ʹ͍ͨ͠ αʔϏεΛ6OJY5JNF͕/ͰׂΓΕΔͱ͖ΞϗʹͳΔΑ͏ʹ͢Εྑ͛͞
©2018 Wantedly, Inc. Ͳ͏͍ͬͨৼΔ͍Λ͖͔͢ { "interval": 1, "slow_response_option": { "enable":
true, "time": 5 }, "server_error_option": { "enable": true } }
©2018 Wantedly, Inc. ͦ͏͍ͬͨύοέʔδΛ࡞ͨ͠ https://github.com/rerost/unstable
©2018 Wantedly, Inc. package main import ( "fmt" "net/http" "github.com/rerost/unstable/uhttp"
) func main() { http.Handle("/", uhttp.WithUnstable(handler)) if err := http.ListenAndServe(":3000", nil); err != nil { fmt.Println(err) } } func handler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Sample")) }
©2018 Wantedly, Inc. package main import ( "context" "log" "net"
"github.com/golang/protobuf/ptypes/empty" api_pb "github.com/rerost/unstable/example/grpc/server/api" "github.com/rerost/unstable/ugrpc" "google.golang.org/grpc" "google.golang.org/grpc/reflection" ) type server struct{} func (s *server) GetSample(ctx context.Context, req *empty.Empty) (*api_pb.GetSampleResponse, error) { return &api_pb.GetSampleResponse{Message: "Sample"}, nil } func main() { l, err := net.Listen("tcp", ":5000") if err != nil { log.Fatalf("Failed to listen: %v", err) } s := grpc.NewServer( grpc.UnaryInterceptor(ugrpc.UnstableUnaryServerInterceptor()), ) api_pb.RegisterSampleServiceServer(s, &server{}) reflection.Register(s) if err := s.Serve(l); err != nil { log.Fatalf("Failed to serve: %v", err) } }
©2018 Wantedly, Inc. Demo
©2018 Wantedly, Inc. γϡοͱ'BVMU*OKFDUJPO͍ͨ͠ͱ͖ʹ͓͢͢Ί $IBPT&OHJOFFSJOHͱ͔ఆ͍ͯ͠ͳ͍