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

インフラエンジニアのWEBアプリ入門

 インフラエンジニアのWEBアプリ入門

y8c 2017の発表資料です。

Shuhei Ozawa

May 26, 2017
Tweet

More Decks by Shuhei Ozawa

Other Decks in Programming

Transcript

  1. ࡞͍ͬͯΔ΋ͷ Collect-Qiita ཁ݅ • Qiitaͷ࠷৽هࣄऔಘͱݕࡧ • ϩάΠϯػೳ • ηογϣϯอ࣋ •

    ͓ؾʹೖΓػೳ(Ԍ্த) 7 Y8 2017 2017/05/27 - Ozawa Shuhei ( @oza_shu )
  2. Collect-QiitaͰඞཁͱͳΔٕज़ • Qiitaͷ࠷৽هࣄऔಘͱݕࡧ • GET,POST,ϧʔςΟϯά,ςϯϓϨʔτ,FORMॲཧ • ϩάΠϯػೳ • DB࿈ܞ, ηΩϡϦςΟ

    • ηογϣϯอ࣋ • Ωϟογϡ, HTTPϓϩτίϧ • ͓ؾʹೖΓػೳ • DB࿈ܞ, Ajax?? 9 Y8 2017 2017/05/27 - Ozawa Shuhei ( @oza_shu )
  3. WEBΞϓϦ͕͓͢͢Ίͷཧ༝ • ೲظ΍ٛ຿͕ͳ͍ • ػೳ௥Ճͯ͠Ԍ্ͯ͠΋͍͍ • ඞཁͳٕज़͕ଟذʹ౉Δ • ৭Μͳٕज़ֶ͕΂ָ͍ͯ͠ʂ •

    αʔό্Ͱಈ͍͍ͯΔ෺͕ͳΜͳͷ͔஌ΕΔ • ͲΜͳٕज़͕࢖ΘΕ͍ͯΔͷ͔஌Δͷָ͍͠ʂ • ॻ͘ͱಈ͘ʂ͢͝ʔ͍ʂͨͷ͠ʔ͍ʂ ɹ- ! 12 Y8 2017 2017/05/27 - Ozawa Shuhei ( @oza_shu )
  4. ίʔυྫ(1) PIDΛΈͯΈΑ͏ # ݱࡏͷϓϩηεΛฦ͢ import os print ("My pid:", os.getpid())

    $ python3 3_processes_have_pid.py My pid: 10592 15 Y8 2017 2017/05/27 - Ozawa Shuhei ( @oza_shu )
  5. ίʔυྫ(2) ϑΝΠϧσΟεΫϦϓλ # ϑΝΠϧσΟεΫϦϓλׂ͕Γ౰ͯΒΕ͍ͯΔ͔ΈͯΈΑ͏ if __name__ == "__main__": with open("/etc/passwd")

    as passwd: print(passwd.fileno()) passwd.closed try: print(passwd.fileno()) except ValueError: print("The file already has closed") # ϑΝΠϧΛด͡Δͱফ͑Δ $ python3 5_processes_have_file_descriptors_closed_file.2.py 3 The file already has closed 16 Y8 2017 2017/05/27 - Ozawa Shuhei ( @oza_shu )
  6. fork()ؾʹͳͬͯ͘Δ ϓϩηε͕Fork͞ΕΔͬͯͲ͏͍͏͜ͱ͚ͩͬ? ࢠϓϩηε͸਌ϓϩηεͰ࢖ΘΕ͍ͯΔશͯͷϝϞϦͷίϐʔΛҾ͖ܧ͙ ϑΝΠϧσΟεΫϦϓλ(ιέοτ)΋ • prefork • ίϐʔɾΦϯɾϥΠτʢCoWɺCopy on Writeʣ

    • ԿͰκϯϏϓϩηεͬͯͳΔΜ͚ͩͬ • ϓϩηεؒ௨৴ • ύΠϓॲཧ,ετϦʔϜ,ϝοηʔδ • γάφϧॲཧ • ϓϩηεάϧʔϓ,ηογϣϯάϧʔϓ 18 Y8 2017 2017/05/27 - Ozawa Shuhei ( @oza_shu )
  7. TCPαʔόͷ࣮૷ • echoαʔόͷ࣮૷͸؆୯ • socketϞδϡʔϧ͕ศར • ෳ਺ͷΫϥΠΞϯτ͔Βͷ઀ଓʹରԠͤͯ͘͞ • Ϛϧνϓϩηε΍ϚϧνεϨουɺΠϕϯτۦಈ •

    I/O(C10K໰୊) • thread,queue,select(),epoll() • GunicornͷίʔϧυϦʔσΟϯά 22 Y8 2017 2017/05/27 - Ozawa Shuhei ( @oza_shu )
  8. ·ͱΊ • ϓϩάϥϛϯάͷ࣍ͷҰา͕Θ͔Δ • ো֐ରԠͰιʔείʔυϨϕϧͰಈ࡞Λ௥͑Δ • ϓϩτίϧ΍௿ϨΠϠͳීวతͳٕज़ֶ͕΂Δ • ٕज़Λ௥͏॥؀ •

    ٕज़Λ௥͏͜ͱ͸ͨͷ͍͠ʂ • ٕज़ͷ࿩୊ͰϑϨϯζ΋Ͱ͖Δʂ • ٕज़ͷ࿩Λ͠ͳ͕Βɺ͓ञΛҿΉͷͨͷ͍͠ʂ 25 Y8 2017 2017/05/27 - Ozawa Shuhei ( @oza_shu )