Upgrade to Pro — share decks privately, control downloads, hide ads and more …

An example of micro-services and best practice

An example of micro-services and best practice

LINE Developers

June 13, 2019
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

  1. • εέʔϧΞοϓ • ୯ମͷϦιʔεʢe.g. αʔόʔʣΛ૿ڧ͢Δ • εέʔϧΞ΢τ • ଟ͘ͷϦιʔεΛฒ΂ͯશମΛ૿ڧ͢Δ •

    ϚΠΫϩαʔϏε͸εέʔϧΞ΢τͱ਌࿨ੑ͕ߴ͍ େن໛αʔϏεʹͱͬͯͷϚΠΫϩαʔϏε
  2. • Web Application ෦෼ • Ϣʔβʔ͕୹࣌ؒʹɾେྔʹΞΫηε͢Δ෦෼ • ͳΔ΂͘௿ϨΠςϯγʔɾInternal Server Error

    ͸ݟͤͨ͘ͳ͍ • → ͋Β͔͡ΊେྔʹinstanceΛฒ΂͓ͯ͘ • → ͋ͱ͔Β࡟ݮͰ͖Δ • Event Consumer ෦෼ • ඇಉظͳॲཧ • εϧʔϓοτ͕े෼͋Ε͹ଟগͷ஗Ԇ͸ڐ༰͞ΕΔ • ࣮֬ʹॲཧ͢Δ͜ͱ͕େࣄ • → ඞཁे෼ͳॲཧೳྗΛ֬อ͓ͯ͘͠ ؆ུ൛ࣄྫ
  3. • ਝ଎ʹ৽ن։ൃͰ͖ͨཧ༝ • طଘͷϚΠΫϩαʔϏεΛ׆༻ • ϢʔβʔೝূɾMessaging APIɾApache Kafka • Apache

    Kafka ʹΑΔඇಉظॲཧͷ࢓૊ΈΛࣄલʹ४උ • Protocol Buffers Λ༻͍ͯޓ׵ੑΛҡ࣋ͭͭ͠มߋՄೳͳ࢓૊Έ • ελϯϓγϣοϓͰ͸ɺ2017೥ʹར༻։࢝͠ɺෳ਺νʔϜ͔Βར༻ྫଟ਺ ʢࠓճͷࣄྫ͸ۃΊͯ؆ུԽͨ͠όʔδϣϯͳͷͰɺ࣮ࡍʹ͸ͦΕͧΕͷ಺ଆͰར༻͢ ΔετϨʔδͳͲؚΊͯϚονͨ͠બఆΛ͢Δʣ ؆ུ൛ࣄྫ
  4. • ҋӢʹϚΠΫϩαʔϏεΛ෼ׂ͢Ε͹ྑ͍΋ͷͰ͸ͳ͍ • େલఏͱͯ͠؅ཧର৅͸গͳ͍΄͏ָ͕ʢαʔϏε਺ɾinstance਺ʣ • “well-shared and well-separated” ͕νʔϜ಺ํ਑ •

    Α͋͘ΔϚΠΫϩαʔϏεԽํ਑ • Α͘࠶ར༻͞Ε͏Δཁૉ • ೝূج൫ɾϩΪϯάج൫ɾϞχλϦϯάج൫ͳͲ͸యܕత • ҰՕॴʹ·ͱΊ͓͖͍ͯͨཁૉ • TransactionͳͲ • ຊ࣭తʹ෼ࢄγεςϜʹͳΔͷͰɺߟྀ͢Δࣄ͕͍͔ͭ͋͘Δ • ωοτϫʔΩϯάͷ஌ࣝɾܦݧɾదͨ͠πʔϧ • ෼ࢄγεςϜͷ஌ࣝɾܦݧɾదͨ͠πʔϧ • ޓ׵ੑΛҡ࣋ͨ͠ rolling update ϚΠΫϩαʔϏεઃܭͷํ਑ྫ
  5. • Armeria • https://line.github.io/armeria/ • API server/client library for modern

    Java • ϚΠΫϩαʔϏεͷͨΊͷػೳ • VerdaʢϓϥΠϕʔτΫϥ΢υʣ • Private X as a service (ϓϩμΫγϣϯ؀ڥͰఏڙத) • VM, Bare-metal, Load Balancer, Managed Database (MySQL, Redis, Elasticsearch), Managed Pub/Sub(Apache Kafka), Storage • Kubernetes as a service, Function as a service͸࣮ূ࣮ݧதͰɺ೥಺ʹஈ֊ తʹϓϩμΫγϣϯ؀ڥʹఏڙ༧ఆ • ϩΪϯάɾϞχλϦϯάج൫ • ࣾ಺ϏοάσʔλͷͨΊͷॲཧج൫ औΓ૊Έࣄྫ
  6. • ϚΠΫϩαʔϏεͷϝϦοτ • ϚΠΫϩαʔϏε͝ͱͷϦιʔεͷ࠷దԽ • ϚΠΫϩαʔϏε͝ͱͷվળ͕͠΍͍͢ • αʔϏεల։ͷਝ଎Խ • ϚΠΫϩαʔϏεͷ՝୊ɾ஫ҙ఺

    • APIͷઃܭ͕ॏཁʹͳΔ • શମ͕ෳࡶܥʹͳΓ΍͍͢ • ҋӢʹ෼ׂ͢ΔͷͰ͸ͳ͘ well-shared and well-separated ·ͱΊ