Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Goサーバをあえて不安定にするパッケージを作った話
Search
Hazumi Ichijo
January 31, 2019
Programming
1.6k
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
480
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
1.5k
病院の情報フローを理解して、 予約〜会計の見え方が変わった話
hazumirr
1
2k
Rubyのコード削除したい時 僕がやること
hazumirr
0
300
テーブル駆動テストと状態
hazumirr
5
2.2k
オンラインテストしようと思った その日に開始できる環境を目指して
hazumirr
0
1.1k
推薦によるプロダクト改善とマイクロサービスが噛み合った話
hazumirr
2
4.9k
ChatGPTで僕が知っていることまとめ
hazumirr
3
3.1k
プロダクトチームとどう 協業し分析環境を改善するか
hazumirr
2
1.7k
Other Decks in Programming
See All in Programming
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
160
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.6k
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
360
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.7k
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
180
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
4
4.7k
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
170
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
770
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
130
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
370
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
400
Building Applications with DynamoDB
mza
96
7.2k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
980
Google's AI Overviews - The New Search
badams
0
1.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
How to build a perfect <img>
jonoalderson
1
6.1k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
750
How GitHub (no longer) Works
holman
316
150k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
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ͱ͔ఆ͍ͯ͠ͳ͍