Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ϚΠΫϩαʔϏε #hatenaintern
Slide 2
Slide 2 text
☪仼סإ٭ٜ ˝ ם؆כםׂُؕؠٞئ٭لتֿלַֹֹס־־ ˝ ُؕؠٞئ٭لتס榫鏤סꦬ㍱妳־
Slide 3
Slide 3 text
☪仼ס⫂㳊 ˝ ُؕؠٞئ٭لتכע ˝ ٓؿٛت ˝ עיםמֽُׄؕؠٞئ٭لت ˝ ُؕؠٞئ٭لتס⮆Ⱏ亠嫎 ˝ ُؕؠٞئ٭لتסوٚؠطؔت ˝ ئ٭لتْشبٖ ˝ ױכ״
Slide 4
Slide 4 text
ֽ鎇םַ׆כ golang
Slide 5
Slide 5 text
ُؕؠٞئ٭لت ُؕؠٞئ٭لتכע
Slide 6
Slide 6 text
ُؕؠٞئ٭لت +
Slide 7
Slide 7 text
ُؕؠٞئ٭لت +
Slide 8
Slide 8 text
אאئ٭لتכע service a system that provides something that the public needs, organized by the government or a private company Hatena REMOTE INTERNSHIP / ( ?)
Slide 9
Slide 9 text
ُؕؠٞئ٭لتכע + https://martinfowler.com/articles/microservices.html 2014 DDD( )
Slide 10
Slide 10 text
هٞءמכ׆סُؕؠٞئ٭لت 1 HTTP API - https://martinfowler.com/articles/microservices.html
Slide 11
Slide 11 text
Slide 12
Slide 12 text
ُؕؠٞئ٭لت REST API GraphQL gRPC... /
Slide 13
Slide 13 text
ةؘن٬يدتס䫍 2002 Amazon 1. ئ٭لتؕ٤ذ٭نؘ٭ت鵟י⪒יסظ٭ذכ嚀耆⪜ꝧ 2. אסؕ٤ذ٭نؘ٭ت鵟י鵟⟓םׄףםםַ 3. ؾشع٠٭ؠ飈סئ٭لتؕ٤ذ٭نؘ٭ت磬榺ג鵟⟓דֿׄ錉⺎ն 4. ✳榫䤗软עゖםַ HTTP Corba Pubsub ⛰ך荁ַ Bezos 5. Steve Yegge Google
Slide 14
Slide 14 text
ُؕؠٞئ٭لتס荁ַכ׆ API
Slide 15
Slide 15 text
ُؕؠٞئ٭لتס荁ַכ׆ ˝ 邾丗סؓوٛآ٭ب٘٤ך⺱⭚杼㲔逷䑒釐ֿםׂם ˝ ❆ֻף鵟湳ُؕؠٞئ٭لتכյ二ַؓوٛآ٭ب٘ ٤ךעאסُؕؠٞئ٭لتסٛؠؙتعדׄך鵟湳ֿך׀ ˝ ٚؕهٚٛך⺱׆כֿ⺎耆כַֻף⺎耆דֿյ銧鏤窜םל ֿ㰆㏇םַסֿَؕ٤ع ˝ ُؕؠٞئ٭لتׇכמز٭ّ⮉׆כֿך׀ ˝ 鵟湳םלْ٤طػ٤ت㓹泅ز٭ّםל
Slide 16
Slide 16 text
ُؕؠٞئ٭لتסחַכ׆ 1 web 2 20 ⾒ ⾒
Slide 17
Slide 17 text
ם僃鲣孱车זיַ־ ProtocolBu er gRPC GraphQL OpenAPI /
Slide 18
Slide 18 text
עיםכُؕؠٞئ٭لت ˝ עיםךُؕؠٞئ٭لت⮵榫יַױ ˝ 鐐ꄋئ٭لت ˝ هٞءذء ˝ 嚀危㰢綗 ˝ ز٭ّꝴךסظ٭ذס ˝ ؓوٛآ٭ب٘٤ُؕؠٞئ٭لتדׄך啶䡗יַכַֹյ釐碛釐碛ُ ؕؠٞئ٭لتיַ ˝ ؓوٛآ٭ب٘٤舅⛮עٓؿٛت┊㴩מ鷞榫יַ◄ֿ㛡ַ
Slide 19
Slide 19 text
ٓؿٛت ( ) 1 .... WAF(WebApplicationFramework)
Slide 20
Slide 20 text
ٓؿٛت 1 1 1 1 DB DB
Slide 21
Slide 21 text
ٓؿٛت 1 DB
Slide 22
Slide 22 text
vs CI/CD 2
Slide 23
Slide 23 text
1 1
Slide 24
Slide 24 text
ُؕؠٞئ٭لتס睦䈱 ? No /
Slide 25
Slide 25 text
㗞槡טׄגؤ٤ط؞تع DDD DB
Slide 26
Slide 26 text
磵⺬ꄆ邾 / ...
Slide 27
Slide 27 text
ُؕؠٞئ٭لتכظ٭ذ畘杼 ˝ ظ٭ذي٭ت┕סظ٭ذյُؕؠٞئ٭لتׇכמ斻玮י䧏ח׀ ˝ ظ٭ذي٭ت⪦僗כյ㗞槡טׄגؤ٤ط؞تعכַֹ䙫⽏ךֵױ荁ׂםַ ˝ ظ٭ذي٭ت邾丗סُؕؠٞئ٭لتך⪦僗כյظ٭ذي٭تֿ磵㷀ⶡ┉꤃㲹憠 מם ˝ ت؞٭ُ⪦僗יַג㕙⺬յֵئ٭لتך㚺催ⱶֻכ☽ئ٭لت㚺催מ鴑 䏼䑒釐ֵֿ ˝ ُؕؠٞئ٭لتׇכמ鸵⮉םظ٭ذي٭ت鹟䥃ך׀⮵憠ֵ ˝ ج؞ٖٛطؔ鈝憠鵭䈱鈝憠םלյ喋չ
Slide 28
Slide 28 text
ُؕؠٞئ٭لتכظ٭ذ畘杼
Slide 29
Slide 29 text
? No API GateWay API PC API API DB DB 1
Slide 30
Slide 30 text
ئ٭لتي٭تؓ٭؞طؠزٔ DB DB
Slide 31
Slide 31 text
ُؕؠٞئ٭لتס⮆Ⱏ
Slide 32
Slide 32 text
ُؕؠٞئ٭لتס⮆Ⱏ ˝ ُؕؠٞئ٭لت⛼זיַׂ꤀ע䑒յُؕؠٞئ٭لتס 鞊ⳉ婊㲊⛼哅ֿ䑒釐מם ˝ ُؕؠٞئ٭لتס⮆Ⱏ ˝ ⪮⛮氳ם⮆Ⱏ亠嫎釤⯥מյُؕؠٞئ٭لتס⯥䬠䤰ֻ יֽ׀ױֹ
Slide 33
Slide 33 text
ُؕؠٞئ٭لتס⯥䬠 DB
Slide 34
Slide 34 text
8 Fallacies of distributed computing ( 8 / ) - 1994 1. 2. 3. 4. 5. 6. 1 7. 8.
Slide 35
Slide 35 text
⺎鈝峮䓪 web / (Observability)
Slide 36
Slide 36 text
⺎鈝峮䓪 mackerel
Slide 37
Slide 37 text
ُؕؠٞئ٭لتס⮆Ⱏ ُؕؠٞئ٭لتס⮆Ⱏע荇չ孱孬ֿ㰆㏇ .... - - 僃鲣ךע⮆Ⱏ䣆Ⲃׄص٭ٜםלֿꝧ氦חחֵ
Slide 38
Slide 38 text
哅ⳉמ⮆Ⱏ ˝ 鏀錞 ˝ よ⿁辐炐٬吾碟 ˝ 鐐ꄋ ˝ ㏇䈻澬鏀 ˝ ⭳蕔⛼哅 ˝ 鑁姲
Slide 39
Slide 39 text
哅ⳉמ⮆Ⱏ ˝ ٗ٭ا٭ֿאא樟ם㗞槡 ˝ ٗ٭ا٭ע⺱דֿյ姲״סֿ樟ם㗞槡
Slide 40
Slide 40 text
哅ⳉמ⮆Ⱏ /
Slide 41
Slide 41 text
㗞槡טׄגؤ٤ط؞تعמ⮆Ⱏ DDD DDD DDD
Slide 42
Slide 42 text
㗞槡טׄגؤ٤ط؞تعמ⮆Ⱏ (Entity Trap) - - - - DB ORM
Slide 43
Slide 43 text
ؕطٝ٭طؔهמ䷉ャ 1
Slide 44
Slide 44 text
攐䓪מ⮆Ⱏ / ( ) 1 (Availability) (Continuity) (Performance) / /
Slide 45
Slide 45 text
攐䓪מ⮆Ⱏ ײׂמُؕؠٞئ٭لت縒ֻ⯥מյױע㵚霄סئ٭لت⮆冪յלסֹםغْؕ ٤⣐ꪫֵֿ־釤哕״ױֹ /
Slide 46
Slide 46 text
❆ֻףج؞ٖٛطؔ ˝ ج؞ٖٛطؔמꄆ釐םظ٭ذ䣽ֹסעئ٭لتכי⮉ ⭳ױֹ ˝ 斻玮גظ٭ذي٭ت ˝ ❆ֻף鵟䅻סئ٭لتכ鐐ꄋئ٭لت⮆ꦕםל ˝ ⮯סئ٭لتכס鵟⟓ס倊⺘吾鋀ױֹ
Slide 47
Slide 47 text
❆ֻף⫋⮵榫䓪 ˝ ؓؗ٤ع㓹泅鵟湳յ婊岷嚀耆םל ˝ ⺱ؓؗ٤عך邾丗סئؕعמٞءؕ٤גַ ˝ 婊岷嚀耆ע䄄丗ֿ־־סךյُؕؠٞئ٭لتי⪦鵟 㓹泅מיֽ׀גַ ˝ 邾丗סئ٭لتך⮵榫ך׀־לֹ־
Slide 48
Slide 48 text
ُؕؠٞئ٭لتס⮆Ⱏ ˝ 釤י׀ג喋מُؕؠٞئ٭لتס⮆Ⱏ縒ֻכ׆ךע喋չ ם鈝憠ֵֿ ˝ 塜鉮ֿ扛ַ┩槡םסךյ喋չםססعٝ٭غ؛ن縒䜡ם ֿ錃銶ֹ ˝ 僃䖾ם錃銶ך扛ׄףؕطٝ٭طؔهמ䷉ャ◄ֿך׀ ˝ ☽ס⣐ꪫכיظ٭ذס䣽ַמ浓泘׆כֵ
Slide 49
Slide 49 text
ُؕؠٞئ٭لتסوٚؠطؔت ˝ ُؕؠٞئ٭لتמֽׄظ٭ذס䣽ַ ˝ ئ٭لتꝴ鵟⟓ ˝ ئ٭لتْشبٖ ˝ ُؕؠٞئ٭لتסٛٛ٭تכٛنؒؠذٛ٤ء
Slide 50
Slide 50 text
ُؕؠٞئ٭لتמֽׄظ٭ذס䣽ַ
Slide 51
Slide 51 text
DB 1 1 DB to DB
Slide 52
Slide 52 text
CAP BASE 3 2 C: Consistency ( ) A: Availability ( P: Tolerance to network Partitions ( ) ( )CAP BASE Basically Available( ) Soft state( ) Eventually consistent( )
Slide 53
Slide 53 text
ُؕؠٞئ٭لتכ⮆丆عٚ٤اؠب٘٤ ! ئ٭لتױג׃عٚ٤اؠب٘٤עםַ 1
Slide 54
Slide 54 text
אך⮆丆عٚ٤اؠب٘٤גַ 2 Saga TCC
Slide 55
Slide 55 text
Saga T , T , T C , C , C :
Slide 56
Slide 56 text
Saga : AWS https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/ latest/modernization-data-persistence/saga-pattern.html
Slide 57
Slide 57 text
TCC Try/Con rm/Cancel ײ؆ם荁ׄף⟊㰆յ鐍־ד״ם؞ٔ٤جٜ
Slide 58
Slide 58 text
TCC Try Cancel Try Con rm Con rm Cancel
Slide 59
Slide 59 text
TCC ˝ אבסئ٭لتמ◅㍑חٛؠؙتعֿ䑒釐 ˝ ع٭ذٜך侇ꝴֿ־־׆כֿؾشؠ
Slide 60
Slide 60 text
DB ? ... ADR
Slide 61
Slide 61 text
睦䈱縒ֻ泡גֹֿ荁ַ侇 1 1
Slide 62
Slide 62 text
ئ٭لتꝴ鵟⟓
Slide 63
Slide 63 text
ئ٭لتꝴ鵟⟓ schema rst
Slide 64
Slide 64 text
⫴璡䓪 1 1 1 /payment {"amount":300, "userAccount": "hoge"} /payment ID /payment {"amount":300, "userAccount": "hoge","forPurchase": "abcd123"} forPurchase forPurchase
Slide 65
Slide 65 text
ئ٭لتْشبٖ
Slide 66
Slide 66 text
ُؕؠٞئ٭لتס畘杼 ˝ ؓوٛآ٭ب٘٤ע邾ꥭםئ٭لت紮סױ ˝ ؓوٛآ٭ب٘٤⟥渏י釤亠嫎ֿ培ַ ˝ ئ٭لتꝴס❣㰆꞊➟ ˝ 泃釱٬ٞءס⹜ ˝ ئؕغ٭قذ٭٤ֿ㛡ׂ⮵榫
Slide 67
Slide 67 text
ُؕؠٞئ٭لتס畘杼 ˝ ꤃㲹氦榟侇ס鐧削 ˝ ⠕չסئ٭لتꯂ樑מ釤יַׂכ侇ꝴֿ־־ ˝ ئ٭لتꝴס鵟⟓畘杼♓┕מ׆כֵֿאֹ
Slide 68
Slide 68 text
ئؕغ٭قذ٭٤ mackerel-container-agent
Slide 69
Slide 69 text
ئ٭لتْشبٖ proxy proxy ip
Slide 70
Slide 70 text
ئ٭لتْشبٖס䏔Ⱏ A B
Slide 71
Slide 71 text
ئ٭؞شعهٝ٭٭ Istio
Slide 72
Slide 72 text
Slide 73
Slide 73 text
Slide 74
Slide 74 text
Slide 75
Slide 75 text
ظ٭ذوٝ٭٤כؤ٤عٞ٭ٜوٝ٭٤ ˝ ظ٭ذوٝ٭٤ ˝ ⺨ئ٭لتמ㳝岣זיⳂׂوٞ؞ب ˝ 鵟⟓ס⯆䐒כ䗯㕔ס⹜ ˝ ىٜتزؘشؠ鏀錞٬鏀⺎םל车ֹ ˝ ْعٛشؠٞء⹜յؤ٤عٞ٭ٜوٝ٭٤峚
Slide 76
Slide 76 text
ظ٭ذوٝ٭٤כؤ٤عٞ٭ٜوٝ٭٤ ˝ ؤ٤عٞ٭ٜوٝ٭٤ ˝ ظ٭ذوٝ٭٤סؕ٤تذ٤تס畘杼 ˝ ⺨ئ٭لتסْعٛشؠٞء⹜ ˝ 啶䡗畘杼٬⺨牊رشبٍٖ٭غ
Slide 77
Slide 77 text
Envoy https://www.envoyproxy.io/ Lyft C++ L L HTTP HTTP, gRPC, WebSocket, TCP ( )
Slide 78
Slide 78 text
Istio Istiod sidecar injection Envoy Envoy
Slide 79
Slide 79 text
ُؕؠٞئ٭لتסٛٛ٭ت亠嫎 API versioning / API
Slide 80
Slide 80 text
壿꣪氳מت؞٭ُסٛنؒؠذٛ٤ء GraphQL gRPC
Slide 81
Slide 81 text
催מ㰢שמע CloudNative CNCF Cloud Native Interactive Landscape The Amazon Builders' Library microservice microservice - . oO( ( l _ l) ) Sam Newman 2016 Susan J. Fowler 2017 Neal Ford, Rebecca Parsons, Patrick Kua 2018 Sam Newman 2020 Microservice Architecture
Slide 82
Slide 82 text
ױכ״ ˝ ُؕؠٞئ٭لتע邾丗סئ٭لتֿ鵟⟓מזי鵽䯥י䡗 玮חؓ٭؞طؠزٔ ˝ ُؕؠٞئ٭لتס⮆Ⱏ亠嫎ע喋չם䣆嫎ֵֿ ˝ ُؕؠٞئ٭لتעؕطٝ٭طؔهמ䷉ャ禈ׄ׆כֿꄆ釐 ˝ ئ٭لتْشبٖםלסوٚؠطؔت⪌יַ׆ֹ
Slide 83
Slide 83 text
זיײֹסؤ٭ػ٭
Slide 84
Slide 84 text
: Istio istioctl install istioctl install !"set profile=demo !"context hatena-intern-2021 kubectl label namespace hatena-intern-2021 istio- injection=enabled kubectl get namespace hatena-intern-2021 -o yaml istio-injection enabled
Slide 85
Slide 85 text
: Istio kubectl apply -f https:!"raw.githubusercontent.com/istio/ istio/release-1.7/samples/addons/kiali.yaml Kiali kubectl apply -f https:!"raw.githubusercontent.com/istio/ istio/release-1.7/samples/addons/prometheus.yaml Prometheus application istioctl dashboard kiali sign in admin:admin
Slide 86
Slide 86 text
Kiali
Slide 87
Slide 87 text
: fault injection 攐㲊ס嚀耆מ䙫㍲氳מ䷚꤃氦榟י䏅ꮶ疗㍱鐧ױ Injecting an HTTP abort fault renderer service ( Service Temporarily Unavailable) fault %age Kiali application blog service error message istio-proxy log "authority": "renderer-go:50051" response_flags
Slide 88
Slide 88 text
: fault injection renderer service response 5 Kiali application istio-proxy log response_flags kubectl delete virtualservices.networking.istio.io [໊લ] fault injection