https://connehito.connpass.com/event/187729/ 【ランサーズ社合同勉強会】コネヒトマルシェオンライン「事業を支えるWeb開発」vol.2
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ECS/Fargateͷ׆༻ࣄྫ(CakePHPฤ)ϥϯαʔζגࣜձࣾSRE/҆ୡ ྋίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2
View Slide
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ΞδΣϯμ ɾࣗݾհɾݱࡏऔΓΜͰ͍Δ͜ͱɾECS/FargateͷϝϦοτσϝϦοτɾ։ൃڥΛ࡞ΔϙΠϯτɾStg/ຊ൪ڥͷߏʹ͍ͭͯɾSSH/࡞ۀ༻ίϯςφʮdevopsʯʹ͍ͭͯɾCircleCIʹΑΔίϯςφσϓϩΠɾECS Scheduled TasksʹΑΔόον࣮ʹ͍ͭͯɾϩά/ίϯςφࢹʹ͍ͭͯɾ·ͱΊ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ࣗݾհ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ࣗݾհ ɾ҆ୡ ྋ(adachin)ɾLancers SRE 2018~ɾ@adachin0817ɾRVIRUS0817ɾblog.adachin.meɾwiki.adachin.meɾOSS :ɾCakePHPͰݸਓαʔϏε։ൃத
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ݱࡏऔΓΜͰ͍Δ͜ͱ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ݱࡏऔΓΜͰ͍Δ͜ͱ ɾڈळɾάϧʔϓձࣾ(γΫϩϚʔέςΟϯά)ɾॳΊͯECS/FargateʹҠߦνϟϨϯδɾRuby on Railsɾࠓ4݄ʹҠߦྃɾݱࡏ (5݄͔Β)ɾάϧʔϓձࣾ(Lancers Agency)ɹɾECS/FargateͰҠߦத(90%)ɹɾࠓճͪ͜ΒͷΛ͠·͢!!
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ϥϯαʔζΤʔδΣϯγʔͷαʔϏεʹ͍ͭͯ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ϥϯαʔζΤʔδΣϯγʔͷαʔϏεʹ͍ͭͯ ɾPROsheetɺLancers Agentɾ͘͞ΒͷΫϥυɹɾPHP5.4 CakePHP2.5.4ɹɾApache,MySQL5.7ɾ։ൃڥɹɾVagrant,AnsibleͰཧɾίʔϙϨʔταΠτɹɾPHP5.5,MySQL5.7ɾϝσΟΞαΠτ(WordPress)ɹɾPHP5.5,MySQL5.7
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2։ൃڥΛ࡞ΔϙΠϯτ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2։ൃڥΛ࡞ΔϙΠϯτ ɾຊ൪ڥͱಉͷߏΛ࠶ݱɾELB(H2O)ίϯςφ(ϦόʔεϓϩΩγ)ɾAppίϯςφɹɾPHP5.5-alpine/CakePHP2.5.4/NginxɾMySQLίϯςφɾSendGridίϯςφɾphpMyAdminίϯςφɾWordPressίϯςφ(PHP7.3-alpine/Nginx)ɾ֤ΞϓϦέʔγϣϯͷىಈSupervisorͰཧɾcomposer installAppίϯςφͰϩάΠϯ࣌ʹ࣮ߦɹɾsupervisorctlͰΞϓϦΛrestart͢ΔΑ͏ʹ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2Stg/ຊ൪ڥͷߏʹ͍ͭͯ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2Stg/ຊ൪ڥͷߏʹ͍ͭͯ ɾTerraformͰશϦιʔείʔυԽɾStgڥۃྗίετΛ͑λεΫ1ͭɾdevopsίϯςφͷར༻ɾDBRDS AuroraʹҠߦɾϝʔϧૹ৴Postfix͔ΒSendGridԽɾίʔϙϨʔταΠτWordPressԽɾը૾S3ԽɾWordPressͷը૾ɹɾWP Offload Media LiteϓϥάΠϯͰS3ʹɾϩάCloudWatch LogsɾόονECS Scheduled Tasksɾ෦ࠪ(ϩάͷू)ɹɾAmazon KinesisɾσϓϩΠCircleCIͷΈͰ࣮ɾࢹDatadog
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2SSH/࡞ۀ༻ίϯςφʮdevopsʯʹ͍ͭͯ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2SSH/࡞ۀ༻ίϯςφʮdevopsʯʹ͍ͭͯ ɾAppʹSSH͠ͳ͍ɾSSH/࡞ۀ༻ίϯςφ(Appͱಉ)ɹɾdevopsͱ໋໊ɾίϚϯυͰRDSଓɹɾdumprestoreɾaws cliͷར༻ɾSSMͷSession Manager ͋Δ͕ɹɾखܰʹ౿Έ͔ΒSSHΛ͍ͨͨ͠ΊɾVPC PeeringͰϥϯαʔζͷωοτϫʔΫ͔ΒSSHϩάΠϯ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2CircleCIʹΑΔίϯςφσϓϩΠʹ͍ͭͯ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2APIܦ༝ͰͷStgڥͷσϓϩΠ ɾStgڥͷσϓϩΠɹɾgithub flowɹɾγΣϧεΫϦϓτɹɹɾҙͷϒϥϯνΛࢦఆɾૉૣ͘σϓϩΠ͕Մೳɹɾ։ൃޮ͕ΞοϓɾMasterϚʔδͰຊ൪ڥϦϦʔεɾTerraform CIڥΛ࣮$ sh deploy.shԼهͷΑ͏ʹϒϥϯνΛࢦఆ࣮ͯ͠ߦ͍ͯͩ͘͠͞ɻ(ྫ) sh deploy.sh ϒϥϯν໊$ sh deploy.sh fix-nginx{"number" : 74,"state" : "pending","id" : "xxxxxx-xxxxx-xxxxx-xxx-xxxxxxxx","created_at" : "2020-08-27T06:14:43.973Z"}ϒϥϯν໊/ fix-nginx ͷStgσϓϩΠΛ։࢝͠·ͨ͠!
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2όονͷ࣮ʹ͍ͭͯ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ECS Scheduled TasksʹΑΔόον࣮ʹ͍ͭͯ ɾࠓ·ͰɹɾCronɾݱࡏɹɾECS Scheduled TasksɹɹɾCloudWatchͷΠϕϯτϧʔϧɹɹɾTerraformԽ{"containerOverrides": [{"name": "prosheet-app","command": ["php","/var/www/prosheet/cake/app/Console/cake.php","-app","/var/www/prosheet/cake/app","mail","exec"]}]
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ϩάʗίϯςφࢹʹ͍ͭͯ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2ϩά/ίϯςφࢹʹ͍ͭͯ ɾΞΫηε/ΞϓϦϩάɺRDSࠪ/ΤϥʔϩάɹɾCloudWatch Logsʹɹɾࠓ·ͰɹɹɾLambdaͰS3ʹγϯΫɹɹɹɹɾPythonͰ࣮͍ͯͨͨ͠Ίӡ༻ίετΞοϓɹɾࠓճɹɹɾAmazon Kinesis Data FirehoseͰS3ʹूɹɹɾTerraformԽɾࢹɹɾMackerel→DatadogʹҠߦɹɾλεΫఆٛʹdatadog-agentΛಈ࡞ͤ͞ΔΑ͏ʹɹɾcpu:10ɺmemory:256 TerraformԽ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2·ͱΊ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2·ͱΊ ɾImmutableͳαʔόʔͷӡ༻ɹɾ҆ఆӡ༻ɺӡ༻ޮͷΞοϓɾϗετΠϯελϯεͷཧ͕ল͚ΔɾλεΫ୯ҐͰࣗ༝ʹϦιʔεมߋՄೳɾॳΊͯίϯςφຊ൪ӡ༻͢Δʹ͔ͳΓϋϚΔɹɾϔϧενΣοΫ͕௨Βͳ͍ͱίϯςφ͕མͪΔɹɾLinuxྗ͕ࢼ͞ΕΔɹɾσϓϩΠͷ࣮͕େม͕ͩલͷܦݧ͕͋ͬͨɹɹɾ͙͢ʹ࣮Ͱ͖ͨɾσόοά͕ͮ͠Β͍ɾλεΫͷىಈ͕Ίɹɾόον࣮ߦ͘ͳΔɾྉ͕͓ۚߴΊɹɾEC2ΑΓׂߴʢ1ׂʙ2ׂʣɾࠓޙɹɾ·ͣདྷ݄தʹҠߦɹɾPHP/CakePHPͷόʔδϣϯΞοϓɹɾίϯςφͷ੬ऑੑݕ (Trivy)ɹɾDatadogͰϩά࿈ܞɹɾChatOpsʹΑΔσϓϩΠɹɾPHP CIڥͷ࣮ɹɾϥϯαʔζຊՈίϯςφҠߦʹνϟϨϯδ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2SREٻΉʂʂ
2020/9/25 ʲϥϯαʔζࣾ߹ಉษڧձʳίωώτϚϧγΣΦϯϥΠϯʮࣄۀΛࢧ͑ΔWeb։ൃʯvol.2