合同勉強会 in 大都会岡山 - 2017 Winter -での発表資料
ϩʔΧϧ։ൃڥʹDockerΛಋೖͨ͠߹ಉษڧձ in େձԬࢁ -2017 Winter-ҳݟ(@mako_wis)
View Slide
ࣗݾհw ҳݟ ΜΈ·͜ͱw 5XJUUFS!NBLP@XJTw גࣜձࣾΫϨΦϑʔΨʢԻૉࡐൢചɺԻָίϯςεταΠτӡӦʣw ϑϩϯταʔόʔαΠυγε
αʔϏεΠϯ࣌ͷߏEC2(App) EC2(Batch)RDS
S3૿͑ΔawsαʔϏεEC2(App) EC2(Batch)RDS
S3૿͑ΔawsαʔϏεEC2(App) EC2(Batch)RDSCloudSearch
S3૿͑ΔawsαʔϏεEC2(App) EC2(Batch)RDSCloudSearchSQS
S3૿͑ΔawsαʔϏεEC2(App) EC2(Batch)RDSCloudSearchSQSSNS
͜͜Ͱͪΐͬͱ͕
ൃੜ͍ͯͨ͠• ֤ࣗͦΕͧΕͰઃఆͯͨ͠ͷͰൿͷλϨԽ• S3Λ։ൃ༻ʹڞ௨ͷόέοτΛݟ͍ͯͨΓͯ͠σʔλͷॏෳ͕ൃੜ• Ϛγϯങ͍ସ͑ͱ͔ͰڥߏஙΓ͠ͷ߹ʹ͕͔͔࣌ؒΔ
ڥߏங͕ϘτϧωοΫʹ
ڥߏஙΛ؆୯ʹͯ͠ޮUP
ରॲํ๏• ϩʔΧϧʹAWSସαʔϏεΛར༻ͯ͠ຊ൪ͱಉͷڥΛߏங• ։ൃऀຖʹຊ൪ͱಉͷڥΛAWS্ʹߏங
ରॲํ๏• ϩʔΧϧʹAWSସαʔϏεΛར༻ͯ͠ຊ൪ͱಉͷڥΛߏங• ։ൃऀຖʹຊ൪ͱಉͷڥΛAWS্ʹߏஙࠓճͬͪ͜
DockerͰϩʔΧϧʹڥߏங
ࠓճͷํ• DockerΛར༻ͯ͠ϩʔΧϧʹ։ൃڥΛߏங• खܰʹڥΛ্ཱ͍ͪ͛ͨͷͰdocker-composeͰίϯςφΛཧ• ସ͑αʔϏε͕ແ͍ͷผ్ରࡦߟ͑Δ
ϝΠϯΞϓϦόονS3MySQLSQSɾSNSSQSɾSNSॳظԽ
S3ͷஔ͖͑• MinioΛ༻• https://github.com/minio/minio• dockerΠϝʔδΛར༻ͯ͠ӬଓԽ͕༰қ• σΟϨΫτϦ=όέοτͱͯ͠Έͳͯ͘͠ΕΔͷͰόέοτ࡞ࡁͰͰ͖Δ
SQSɾSNSͷஔ͖͑• Localstack• https://github.com/localstack/localstack• ֤छawsαʔϏεͷସ͑αʔϏεΛఏڙ• s3minioͷํ͕͍͍͢ͷͰࠓճະ༻• SNSSQSͷ྆ํରԠͯ͘͠Ε͍ͯΔ• Ωϡʔ࡞ผ్ઃఆόονΩοΫ༻ͷΠϝʔδΛ࡞ͯ͠docker-compose up࣌ʹ࣮ߦ
RDSͷஔ͖͑• ฐࣾMySQLͳͷͰMySQLͷdockerΠϝʔδΛ༻• ֤ࣗೖΕ͍ͯΔMySQLΛ༻͢Δख͕͋ͬͨઃఆόʔδϣϯ͕όϥͭ͘Մೳੑ͋ΔͷͰ౷Ұ
CloudSearchɾɾɾ• ϕʔλ൛͔ͩΒͳͷ͔ସ͑αʔϏε͕ΠϚΠν• ݩʑΫϥυαʔνͷઃఆ͕ͳ͔ͬͨΒDBͷݕࡧʹΓସ͑ΔϩδοΫ͕͋ͬͨͷͰͦΕΛར༻• ʢͦͷ͏ͪElasticSearchʹΓ͑Δ͔͠Εͳ͍ͷͰҰ୴ஔ͍͓ͯ͘
όονΞϓϦͷରԠ• όονͷDockerΠϝʔδͷ࡞• DockerԽʹ͏ίʔυमਖ਼• SQSʹґଘͯ͠ΔͷͰSQSͷ४උྃΛͭίʔυΛՃ• ϝΠϯΞϓϦͱಉ࣌ʹىಈ͍ͨ͠• όονͷDockerϑΝΠϧΛϏϧυͯ͠ΠϝʔδΛ࡞͢ΔํࣜΛબ• ϦϙδτϦ͕ผͳͷͰgit submoduleΛར༻ͯ͠ϝΠϯΞϓϦͷϦϙδτϦʹՃ
ϝΠϯΞϓϦͷରԠ• RailsΞϓϦέʔγϣϯ• ࠷ॳDockerΛར༻ͤͣͦͷ··ىಈ͢Δ༧ఆͰ͕ͨ͠ɾɾɾ• όονଆ͔ΒϝΠϯΞϓϦͷAPIΛୟ͘ඞཁ͕͋Γ• Dockerଆ͔ΒϗετOSͷΞυϨεΛऔಘ͢Δํ๏͕OSຖʹ·ͪ·ͪ• ϝϯόʔͷOSWindowsɺMacOSࠞࡏ• ϦϙδτϦϧʔτʹDockerϑΝΠϧΛஔ͍ͯΠϝʔδϏϧυ
Docker-compose upͰ։ൃڥ্ཱ͕͕ͪΔ
·ͱΊ• docker-compose upͰඞཁͳ։ൃڥ্ཱ͕͕ͪΔͷศར• ֤ࣗͦΕͧΕͰઃఆ͢Δख͕ؒল͚ͨ• Railsͷ֤छίϚϯυΛ࣮ߦ͢Δͷ͕໘• ͍͍ͪͪdocker-compose run ~Λ࣮ߦ͢Δͷ͕ΊΜͲ͍͘͞• γΣϧεΫϦϓτΛ४උͯ͠লྗԽ• DockerΠϝʔδS3ϩʔΧϧԽͰPCͷ༰ྔ͕ඞཁ
͓ΘΓ