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

Erlang 事例紹介: メディアストリーム中継システム

Erlang 事例紹介: メディアストリーム中継システム

My talk on Erlang & Elixir Fest. 2018
https://elixir-fest.jp/

Shohei Yasutake

June 16, 2018
Tweet

More Decks by Shohei Yasutake

Other Decks in Programming

Transcript

  1. ੜ์ૹͷதܧʹٻΊΒΕΔੑ࣭ w ͨ͘͞Μͷಉ࣌ࢹௌऀ਺ ਺ेສ ʹ଱͑ΒΕ ΔΑ͏ʹɺͨ͘͞Μͷαʔό ਺ඦ୆ ʹதܧ Ͱ͖Δ w

    ࢹௌऀ͕Ұؾʹདྷͯ΋଱͑ΒΕΔ w ஗ԆΛ௿͘อͭ  ͜ΕΒ͸%.$಺෦ʹ࣮૷ࡁΈɺ͕ͩʜ
  2. %.$ͷதܧػೳͷ໰୊఺ w தܧπϦʔΛ؅ཧ͍ͯ͠Δϓϩηε͕མͪΔͱπϦʔશମ ͕ऴྃ͢Δ ୯Ұো֐఺  w ෳࡶͰɺίʔυͷมߋ͕೉͘͠ͳ͖͍ͬͯͯΔ w தܧػೳ͸%.$಺෦Ͱ͔͠࢖͑ͳ͍ͨΊɺ%.$Ҏ֎ʹ

    ετϦʔϜΛड͚౉͢ͱ͍͏͜ͱ͕Ͱ͖ͳ͍ w %.$͸ϞϊϦγοΫͳγεςϜͰɺ։ൃɾӡ༻͕ͭΒ ͍ͨΊɺϚΠΫϩαʔϏεԽ͍ͨ͠ w ͦͷͨΊʹ͸தܧػೳΛ%.$֎෦͔ΒͰ΋࢖͑Δඞ ཁ͕͋Δ 
  3. ετϦʔϜதܧγεςϜTMVJDFHBUF  %.$ 4( 4( %.$ 4( %.$ 4( %.$

    ϊʔυ" ϊʔυ# ϊʔυ$ ϊʔυ% ετϦʔϜ͸ྲྀΕͳ͘ͳΔ͕ɺ ϊʔυ#ͱϊʔυ$ͷ઀ଓ͸੾Εͳ͍
  4. %.$ͱTMVJDFHBUFͷ໾ׂ෼୲  ੜ์ૹͷதܧʹ ٻΊΒΕΔੑ࣭ TMVJDFHBUFͷ໾ׂ %.$ͷ໾ׂ ͨ͘͞Μͷαʔόʹதܧ Ͱ͖Δ தܧπϦʔͷߏங ಛʹͳ͠

    Ұؾʹࢹௌऀ͕૿͑ͯ΋ େৎ෉ ඵʹͭαʔό͕ ૿͑Δ͘Β͍ͳΒ༨༟ ࣄલʹTMVJDFHBUF͔Β ετϦʔϜΛҾ͍͓ͯ͘ ஗ԆΛ௿͘อͭ ஗Ԇ͕খ͍͞ܦ࿏΁ͷ ࣗಈ੾Γସ͑ ಛʹͳ͠ 4( %.$ ࢹௌऀ΁͸TMVJDFHBUF͔Β ௚઀഑৴͞ΕΔͷͰ͸ͳ͘ɺ %.$͔Β഑৴͞ΕΔ
  5. ϝοηʔδύογϯάʹؔ͢Δ ؆୯ͳ ࡶͳ ϕϯνϚʔΫ݁Ռ w ͍ܰॲཧΛɺࣗϓϩηεͰߦ͏৔߹ͱɺଞϓϩηεʹߦΘ ͤΔ৔߹ HFO@TFSWFSDBMMͷΑ͏ͳܗ ͩͱɺଞϓϩη εʹߦΘͤͨ΄͏͕໿ഒ͕͔͔࣌ؒͬͨ

    w IUUQTHJTUHJUIVCDPNBNVUBLF EBEDGGBD w ͨͩ͠ɺϝοηʔδύογϯάͷίετ͕ແࢹͰ͖Δ͘ Β͍ॏ͍ॲཧͷ৔߹͸ผ w TMVJDFHBUFͷ৔߹ɺετϦʔϜͷ֤ϝοηʔδʹରͯ͠͸ ͍ܰॲཧ͔͠͠ͳ͍ͨΊɺϝοηʔδύογϯάͷίετ ͸ແࢹͰ͖ͳ͍ 
  6. ϓϩηεਤ ϓϩτλΠϓ࣮૷  %.$ ଞͷ ΞϓϦ "ΞϓϦέʔγϣϯͱͷ௨৴༻ϓϩηε #)Z1BS7JFX΍1MVNUSFFͱͷ ΍ΓͱΓΛ஥հ͢Δϓϩηε $಺෦௨৴༻ͷϓϩηε

    TMVJDFHBUF " $ $ " # ) 1 4 4ΞϓϦέʔγϣϯͱͷ௨৴ϓϩηεΛ ·ͱΊΔϓϩηε ))Z1BS7JFXϓϩηε 11MVNUSFFϓϩηε ετϦʔϜΛଞϊʔυʹड͚౉͢ ͨΊʹճͷϝοηʔδύογϯά  ετϦʔϜΛΞϓϦέʔγϣϯʹड͚౉͢ ͨΊʹճͷϝοηʔδύογϯά ετϦʔϜͷϓϩηεਤ
  7. ϓϩηεਤ ϓϩτλΠϓ࣮૷  %.$ ଞͷ ΞϓϦ "ΞϓϦέʔγϣϯͱͷ௨৴༻ϓϩηε #)Z1BS7JFX΍1MVNUSFFͱͷ ΍ΓͱΓΛ஥հ͢Δϓϩηε $಺෦௨৴༻ͷϓϩηε

    TMVJDFHBUF " $ $ " # ) 1 4 4ΞϓϦέʔγϣϯͱͷ௨৴ϓϩηεΛ ·ͱΊΔϓϩηε ))Z1BS7JFXϓϩηε 11MVNUSFFϓϩηε ετϦʔϜΛଞϊʔυʹड͚౉͢ ͨΊʹճͷϝοηʔδύογϯά  ετϦʔϜΛΞϓϦέʔγϣϯʹड͚౉͢ ͨΊʹճͷϝοηʔδύογϯά ετϦʔϜͷϓϩηεਤ
  8. ϓϩηεਤ ϓϩτλΠϓ࣮૷  %.$ ଞͷ ΞϓϦ "ΞϓϦέʔγϣϯͱͷ௨৴༻ϓϩηε #)Z1BS7JFX΍1MVNUSFFͱͷ ΍ΓͱΓΛ஥հ͢Δϓϩηε $಺෦௨৴༻ͷϓϩηε

    TMVJDFHBUF " $ $ " # ) 1 4 4ΞϓϦέʔγϣϯͱͷ௨৴ϓϩηεΛ ·ͱΊΔϓϩηε ))Z1BS7JFXϓϩηε 11MVNUSFFϓϩηε ετϦʔϜΛଞϊʔυʹड͚౉͢ ͨΊʹճͷϝοηʔδύογϯά  ετϦʔϜΛΞϓϦέʔγϣϯʹड͚౉͢ ͨΊʹճͷϝοηʔδύογϯά ετϦʔϜͷϓϩηεਤ
  9. ϓϩηεਤ ϓϩτλΠϓ࣮૷  %.$ ଞͷ ΞϓϦ "ΞϓϦέʔγϣϯͱͷ௨৴༻ϓϩηε #)Z1BS7JFX΍1MVNUSFFͱͷ ΍ΓͱΓΛ஥հ͢Δϓϩηε $಺෦௨৴༻ͷϓϩηε

    TMVJDFHBUF " $ $ " # ) 1 4 4ΞϓϦέʔγϣϯͱͷ௨৴ϓϩηεΛ ·ͱΊΔϓϩηε ))Z1BS7JFXϓϩηε 11MVNUSFFϓϩηε ετϦʔϜΛଞϊʔυʹड͚౉͢ ͨΊʹճͷϝοηʔδύογϯά  ετϦʔϜΛΞϓϦέʔγϣϯʹड͚౉͢ ͨΊʹճͷϝοηʔδύογϯά ετϦʔϜͷϓϩηεਤ ແବͳͷͰ·ͱΊΔ
  10. ϓϩηεਤ ݱࡏͷܗ  %.$ TMVJDFHBUF # " $ $ "

    ଞͷ ΞϓϦ %.$ TMVJDFHBUF # " " $ ଞͷ ΞϓϦ %.$ TMVJDFHBUF # " " $ ଞͷ ΞϓϦ "ΞϓϦέʔγϣϯͱͷ௨৴༻ϓϩηε #΄΅͢΂ͯͷॲཧΛ͢Δϓϩηε $಺෦௨৴༻ͷϓϩηε ϝοηʔδΛड͚औͬͯଞϊʔυɾΞϓϦ έʔγϣϯʹड͚౉͢ͷʹճͷϝοηʔ δύογϯά
  11. ϓϩηεਤ ݱࡏͷܗ  %.$ TMVJDFHBUF # " $ $ "

    ଞͷ ΞϓϦ %.$ TMVJDFHBUF # " " $ ଞͷ ΞϓϦ %.$ TMVJDFHBUF # " " $ ଞͷ ΞϓϦ "ΞϓϦέʔγϣϯͱͷ௨৴༻ϓϩηε #΄΅͢΂ͯͷॲཧΛ͢Δϓϩηε $಺෦௨৴༻ͷϓϩηε ϝοηʔδΛड͚औͬͯଞϊʔυɾΞϓϦ έʔγϣϯʹड͚౉͢ͷʹճͷϝοηʔ δύογϯά
  12. TMVJDFHBUFͷϊʔυؒ௨৴ w ϊʔυؒ͸HFO@UDQͰ௨৴ w )Z1BS7JFX1MVNUSFF༻ͷ௨৴ w ϝσΟΞετϦʔϜͷड͚౉͠ w ཧ༝ w

    ϊʔυؒͷ઀ଓ͸໌ࣔతʹ؅ཧ͍ͨ͠ w )Z1BS7JFXͰ઀ଓͷঢ়ଶΛѻ͏ͨΊ w &SMBOHϨΠϠͷ௨৴ͩͱଟগΦʔόϔου͕͔ ͔Δ 
  13. σόοάͷ೉͠͞ w ϩά͕ෳ਺ͷϊʔυ͔Β ৔߹ʹΑͬͯ͸ॱং͕ લޙͯ͠ ग़ͯ͘Δ w ͨ·ʹى͜ΔόάΛ࠶ݱͤ͞ΒΕͳ͍ɾ࠶ݱͯ͠ ΋ؾ͔ͮͳ͍ w

    ͦ΋ͦ΋ͲͷϊʔυͱͲͷϊʔυ͕ͭͳ͕͍ͬͯ Δ͔΋Θ͔Βͳ͍͠ɺτϙϩδ΋සൟʹมΘΔ  ϩάͱʹΒΊͬ͜͸ݫ͍͠ɻπʔϧΛ࡞ͬͨɻ
  14. ͺͿ͞Ϳ͘Μ ݕূπʔϧ w ࣮ࡍʹετϦʔϜΛྲྀͯ͠ҎԼΛ͔֬ΊΔπʔϧ w தܧͰ஗Ԇ͕ൃੜ͠ͳ͍͔ w ಉ͡ϝοηʔδྻʹͳ͍ͬͯΔ͔ w ෛՙ΋͔͚ΒΕΔ

     4( 4( πʔϧ ετϦʔϜΛྲྀ͢ ετϦʔϜΛड͚औΔ ଟஈͷதܧ ɾ஗Ԇ͠ͳ͍͔ ɾಉ͡ετϦʔϜ͔
  15. πʔϧ͕໾ʹཱͬͨྫ w ͺͿ͞Ϳ͘Μ ݕূπʔϧ Λ࢖ͬͯෛՙΛ͔ ͚Δͱɺ਺ඵຖʹϊʔυؒ઀ଓ͕੾ΕͨΓͭ ͳ͕ͬͨΓ͍ͯ͠Δͷ͕ਫಓہ ՄࢹԽπʔ ϧ ͰΘ͔ͬͨ

    w ͨ·ʹى͜Δͷ͸໰୊ͳ͠ɻ࿈ଓͯ͠ى͜Δ ͷ͸͓͔͍͠ όάͷൃݟ  w ʮ਺ඵຖʯͱ͍͏৘ใͱϩά͔Βɺ਺ඵຖʹ ߦ͍ͬͯΔॲཧʹ໰୊͕͋Δ͜ͱ͕Θ͔ͬͨ 
  16. ௐࠪ͠΍͢͞ w Ξλον͢Ε͹ͳΜͰ΋Ͱ͖Δ w ಈ͍͍ͯΔঢ়ଶͷ΋ͷʹରͯ͠ɺ w ϓϩηεͷ಺෦ঢ়ଶΛ೷͍ͨΓɺ w ೚ҙͷؔ਺Λ࣮ߦͨ͠Γ w

    SFDPO &SMBOHͷศརσόοά༻ϥΠϒϥϦ  ͷଘࡏ w τϨʔεͷऔಘɺSFEVDUJPO਺ͷऔಘɺͳͲ 
  17. w طଘγεςϜͷετϦʔϜதܧ෦෼ʹ͍͔ͭ͘໰୊͕͋ͬͨ w ୯Ұো֐఺ͷଘࡏ w ෳࡶ͞ w طଘγεςϜҎ֎ʹ͸தܧͰ͖ͳ͍ w ετϦʔϜதܧ෦෼Λϛυϧ΢ΣΞͱͯ͠੾Γग़ͨ͠

    &SMBOH੡  w ޻෉ͨ͠ͱ͜Ζ w Ͱ͖Δ͚ͩϝοηʔδύογϯά͠ͳ͍ w &SMBOHΫϥελΛ૊·ͳ͍ w σόοάͷͨΊͷπʔϧΛ࡞Δ w 1MVNUSFFΛิ͏ͨΊͷόοϑΝ $PRͰূ໌ࡁΈ  w &SMBOHͷΑ͔ͬͨͱ͜Ζ w ωοτϫʔΫαʔόͷॻ͖΍͢͞ w ෼ࢄΞϧΰϦζϜͷॻ͖΍͢͞ w ௐࠪ͠΍͢͞