๐š๐™ธ๐š˜ฬ๐™ฝ

9,348 posts
Opens profile photo
๐š๐™ธ๐š˜ฬ๐™ฝ
@rio_devops
DevOps Engineer๐Ÿ‘จโ€๐Ÿ’ป/ AWS, TypeScript /ๅค–่ฆ‹ๆ”นๅ–„ for all Engineers
JTClit.link/en/rion4bizJoined April 2022

๐š๐™ธ๐š˜ฬ๐™ฝโ€™s posts

Pinned
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฎ็š†ๆง˜ใ€ ๅคงๅค‰ใŠๅพ…ใŸใ›ใ„ใŸใ—ใพใ—ใŸใ€‚ ๆœฌๆ—ฅใ‚ˆใ‚Šใ€ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใซ็‰นๅŒ–ใ—ใŸๅค–่ฆ‹ๆ”นๅ–„ใ‚ตใƒผใƒ“ใ‚นใ€ŒREFACTAใ€ใ‚’้–‹ๅง‹ใ—ใพใ™๏ผ ไปŠๅพŒๅค–่ฆ‹ๆ”นๅ–„ใซๆœ‰็”จใชๆƒ…ๅ ฑ็™บไฟกใ‚’ใ—ใฆใ„ใใฎใงใ‚ˆใ‹ใฃใŸใ‚‰ใƒ•ใ‚ฉใƒญใƒผใŠ้ก˜ใ„ใ—ใพใ™๐Ÿคฒ()
Quote
REFACTA
@refacta_ring
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฎ็š†ๆง˜ใ€ใฏใ˜ใ‚ใพใ—ใฆใ€‚ ใ‚จใƒณใ‚ธใƒ‹ใ‚ขๅ‘ใ‘ๅค–่ฆ‹ๆ”นๅ–„ใ‚ตใƒผใƒ“ใ‚นใ€ŒREFACTAใ€ใฎๅ…ฌๅผใ‚ขใ‚ซใ‚ฆใƒณใƒˆใงใ™ใ€‚ ไปŠๅพŒใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฎ็š†ๆง˜ใฎๅค–่ฆ‹ๆ”นๅ–„ใซๅฝน็ซ‹ใคๅ„็จฎๆƒ…ๅ ฑใ‚’็™บไฟกใ—ใฆใ„ใใฎใงใ€ ใ‚ˆใ‹ใฃใŸใ‚‰ใƒ•ใ‚ฉใƒญใƒผใ‚’ใŠ้ก˜ใ„ใ—ใพใ™๏ผ ๐Ÿ”ฝREFACTAๅ…ฌๅผnoteใฏใ“ใกใ‚‰ note.com/refacta
ๅ…จใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏไปŠใฎ่‡ชๅˆ†ใฎๅฐ‚้–€ใ‚’ๅ•ใ‚ใšใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใซ่ฉณใ—ใใชใฃใŸๆ–นใŒใ„ใ„ใ€‚ DBใซใฏๅฐ‘ใชใใจใ‚‚SQL/ใƒ†ใƒผใƒ–ใƒซ่จญ่จˆ/ใƒ‡ใƒผใ‚ฟ็งป่กŒ/ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใฎ4ๅˆ†้‡ŽใŒใ‚ใ‚‹ 1. SQL ๅŸบๆœฌ็š„ใชใ‚ฏใ‚จใƒชใŒๆ›ธใ‘ใ‚‹ใ‹ใฉใ†ใ‹๏ผŸ 2. ใƒ†ใƒผใƒ–ใƒซ่จญ่จˆ ใƒ†ใƒผใƒ–ใƒซ้–“ใฎใƒชใƒฌใƒผใ‚ทใƒงใƒณใ‚’ๅซใ‚ใฆใƒ†ใƒผใƒ–ใƒซใฎ่จญ่จˆใ‚’ๆญฃ่ฆๅŒ–ใ‚’ๅซใ‚ใฆใงใใ‚‹ใ‹๏ผŸ
Itๆฅญ็•Œใซๆฅใฆๆ€ใ†ใฎใฏใ€ไฝ“่ชฟไธ่‰ฏใซใชใ‚‹ไบบใŒๅคšใ„ใ“ใจใจใ€ไบบใซ่ˆˆๅ‘ณใŒใชใ„ไบบใŒๅคšใ„ใ€‚ไบบใซ่ˆˆๅ‘ณใŒใชใ„ใ‹ใจๆ€ใˆใฐๆ„ๅค–ใจๅ‚ทใคใใ‚„ใ™ใ็นŠ็ดฐใ ใฃใŸใ‚Šใ€็Ÿ›็›พใ—ใฆใฏ่ฆ‹ใˆใ‚‹ใŒไธ€ไฝ“ใ€ITๆฅญ็•Œใซไฝ•ใŒ่ตทใ“ใฃใฆใ„ใ‚‹ใฎใ‹๏ผŸ
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅ…จๅ“กใ€ไปŠใฎ่‡ชๅˆ†ใฎๅฐ‚้–€ใ‚’ๅ•ใ‚ใšใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใซ่ฉณใ—ใใชใฃใŸๆ–นใŒใ„ใ„ใ€‚ DBใซใฏๅฐ‘ใชใใจใ‚‚SQL/ใƒ†ใƒผใƒ–ใƒซ่จญ่จˆ/ใƒ‡ใƒผใ‚ฟ็งป่กŒ/ใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใฎ4ๅˆ†้‡ŽใŒใ‚ใ‚‹ 1. SQL ๅŸบๆœฌ็š„ใชใ‚ฏใ‚จใƒชใŒๆ›ธใ‘ใ‚‹ใ‹ใฉใ†ใ‹๏ผŸ 2. ใƒ†ใƒผใƒ–ใƒซ่จญ่จˆ ใƒ†ใƒผใƒ–ใƒซ้–“ใฎใƒชใƒฌใƒผใ‚ทใƒงใƒณใ‚’ๅซใ‚ใฆใƒ†ใƒผใƒ–ใƒซใฎ่จญ่จˆใ‚’ๆญฃ่ฆๅŒ–ใ‚’ๅซใ‚ใฆใงใใ‚‹ใ‹๏ผŸ
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅ…จๅ“กใ€Dockerใ‚’็†่งฃใ—ใฆไฝฟใˆใ‚‹ใ‚ˆใ†ใซใชใฃใŸๆ–นใŒใ„ใ„ใ€‚ Dockerใ‚’ไฝฟใ†ใƒกใƒชใƒƒใƒˆใฏ็’ฐๅขƒๅทฎใŒใชใใชใ‚Šใ€็’ฐๅขƒๆง‹็ฏ‰ใงใƒ„ใƒœใ‚‹ใ‚ˆใ†ใชใ“ใจใŒๆธ›ใ‚‹ใ“ใจใ€‚็’ฐๅขƒๆง‹็ฏ‰ใŒใ™ใ็ต‚ใ‚ใ‚Šใ€ๆœฌ่ณชใฎ้–‹็™บใซๅ…ฅใฃใฆใ„ใ‘ใ‚‹ใ€‚ Docker้–‹็™บใฎใ‚„ใ‚Šๆ–นใจใ—ใฆใ€ 1.ใ‚ณใƒณใƒ†ใƒŠไฝœๆˆใฎใƒ™ใƒผใ‚นใจใชใ‚‹Node.jsใชใฉใฎใ‚คใƒกใƒผใ‚ธใ‚’pull
ๆŒซๆŠ˜ใ‚’ๆ„Ÿใ˜ใฆใ„ใ‚‹ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏใ€ ๆฏŽๆœ5ๆ™‚ใซ่ตทใใ€ๆ–‡็ซ ใ‚’2ๆ™‚้–“่ชญใฟใ€ๆ–‡็ซ /ใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใไฝœๆฅญ2ๆ™‚้–“ใฎ่จˆ4ๆ™‚้–“ใ‚’ๅง‹ๆฅญใฎ10ๆ™‚ใพใง่กŒใ†ใจใ„ใ„ ่€ƒใˆใ‚‹่ƒฝๅŠ›/้€ŸๅบฆใŒ้ซ˜ใใชใ‚ŠๆŠ€่ก“ใซ่ฉณใ—ใใชใ‚‹ใ€‚ ๅ‰ฏๆฅญใงใ‚‚็จผๅƒใ—ใฆใŠ้‡‘ใ‚’ๅข—ใ‚„ใ—ใ€็พŽๅฎนใจๆŠ€่ก“ใซๆŠ•่ณ‡ใ‚’ใ—ใฆ่‰ฏ่ณชใชไบบ้–“้–ขไฟ‚ใ€ใ‚ˆใ‚Š่‰ฏใ„ใ‚ญใƒฃใƒชใ‚ขใ‚’ๅพ—ใฆใ„ใใ€‚
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅ…จๅ“กใ€DBใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ/ ใ‚นใƒญใƒผใ‚ฏใ‚จใƒชๆ”นๅ–„ใฎใ‚„ใ‚Šๆ–นใ‚’็ŸฅใฃใŸๆ–นใŒใ„ใ„ใ€‚็‰นใซใ‚นใƒญใƒผใ‚ฏใ‚จใƒชใฏๆ”นๅ–„ใงใใชใ„ใจ็”ป้ขใŒ้‡ใใชใ‚Šใ€ ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใ‹ใ‚‰ใƒฆใƒผใ‚ถใƒผไฝ“้จ“ใพใง่ซธใ€…ๆฟ€่ฝใกใ€‚้›ข่„ฑ/ ่งฃ็ด„ใพใงใคใชใŒใฃใฆใ—ใพใ†ใ‹ใ‚‰ใ ใ€‚ ใ‚นใƒญใƒผใ‚ฏใ‚จใƒชใƒผๆ”นๅ–„ใงใฏๆฆ‚ใญไปฅไธ‹ใฎ1~4ใซๅพ“ใ†ใ€‚ 1. ่จˆๆธฌ -> 2. ๅฎŸ่กŒ่จˆ็”ป ->
่‡ชๅˆ†ใฎๅ‘จใ‚Šใฏใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆฆ‚ใญไธ€ไบบ็งฐใง่จญ่จˆใ€œ้–‹็™บใพใงใงใใฆใ€ๆ–ฐๆŠ€่ก“ใ‚„ใƒ“ใ‚ธใƒใ‚นใพใง่ˆˆๅ‘ณใฎใ‚ใ‚‹ไบบใŒๅคšใ„ใ‘ใฉใ€ๆœฌๅฝ“ใซใ“ใ‚“ใชไธ–็•ŒใŒใ‚ใ‚‹ใฎใ‹๏ผŸๆ‚ฒใ—ใ„ใ€‚ โ€œใ—ใ‹ใ—ใ€็œŸใซๅบ•่พบใชใ‚จใƒณใ‚ธใƒ‹ใ‚ขใจใ„ใ†ใฎใฏๅ˜ใชใ‚‹ๆŠ€่ก“ใƒฌใƒ™ใƒซใฎ้ซ˜ไฝŽใงใฏใชใ„ใ€ไบˆๆƒณไปฅไธŠใซ้š”็ตถใ—ใŸโ€
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใงใƒ†ใ‚นใƒˆใ‚’ๆ›ธใ„ใฆใ“ใชใ‹ใฃใŸใฒใจใฏๅผ•ใ่ฟ”ใ›ใชใใชใ‚‹ใ€‚5ๅนดใ€10ๅนดใจใšใฃใจใƒ†ใ‚นใƒˆใ‚’ๆ›ธใ„ใฆใใŸใ“ใจใŒใชใ‹ใฃใŸใ‹ใ‚‰ใ€ไปŠๆ›ดๅค–้‡Žใซใƒ†ใ‚นใƒˆใ‚’ๆ›ธใใพใ—ใ‚‡ใ†ใจ่จ€ใ‚ใ‚ŒใŸใ‚‰ใƒ ใ‚ญใซใชใฃใฆๆฟ€ๆ˜‚ใ™ใ‚‹ใ€‚twada ใŒใ„ใใ‚‰ๅซใ‚“ใงใ‚‚ใƒ†ใ‚นใƒˆใ‚’ๆ›ธใ‹ใชใ„ไบบใฏใ„ใ‚‹
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใง3ๅนดๅŠชๅŠ›ใ™ใ‚Œใฐใ€ๅนดๅŽ600ไธ‡(้ƒฝๅ†…ใงใชใ‚“ใจใ‹ไฝใ‚ใ‚‹ใƒฌใƒ™ใƒซ)ใซใฏ้”ใ™ใ‚‹ใจๆ€ใ†ใ€‚ใใ‚Œใงใ‚‚ใ€ๆœฌไบบใŒ็›ฎๆจ™ใซ้”ใ™ใ‚‹ใ“ใจใ‚’ๆœ›ใฟใชใŒใ‚‰ๅŠชๅŠ›ใงใใชใ„ไบบใŒใ„ใ‚‹ใฎใฏใชใœใ‹ใ€่‡ชๅˆ†ใจใ—ใฆใ‚‚้žๅธธใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ใ€‚ ไฝ•ๆ•…ๆตใพใ‚Œใชใ„ไบบ้–“ใฏๅŠชๅŠ›ใ—ใชใ„ใฎใ‹๏ผŸ๏ฝœrei #note
ๆœ€ใ‚‚ๅŸบ็คŽ็š„ใชAWSใฎใƒŸใƒ‹ใƒžใƒซๆง‹ๆˆ(ELB+VPC+EC2+RDS/่ค‡ๆ•ฐAZ)ใ€‚ AWSใซๅ…ฅ้–€ใ—ใŸใ„ไบบใฏๅ…จๅ“กใ€็†่งฃใงใใŸๆ–นใŒใ„ใ„ใ€‚AWSใ‚ˆใใ‚ใ‹ใ‚‰ใ‚“ใ€ใ€ใชไบบใ‚‚ใ“ใ‚ŒใŒใ‚ใ‹ใ‚‹ใจไธ€ๆฐ—ใซAWSใฎ็†่งฃใŒๆทฑใพใ‚‹ใ€‚ไปฅไธ‹่งฃ่ชฌ๐Ÿ”ฝ
Image
AWSใซๅ…ฅ้–€ใ—ใŸใ„ไบบใฏๅ…จๅ“กใ€VPCใ€ใ‚ตใƒ–ใƒใƒƒใƒˆใ‚’็†่งฃใ—ใฆNWใ‚’ๆง‹็ฏ‰ใงใใŸๆ–นใŒใ„ใ„ใ€‚ ๆญฃ็›ดใ‚ˆใใ‚ใ‹ใ‚‰ใ‚“...ใชไบบใฎใŸใ‚ใซ่งฃ่ชฌโฌ‡๏ธ AWSใงใ‚ทใ‚นใƒ†ใƒ ๏ผˆใ‚ตใƒผใƒใƒผใ‚„DBใชใฉ๏ผ‰ใ‚’็จผๅƒใ•ใ›ใ‚‹ใซใฏใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใŒๅฟ…่ฆใ€‚ ใใฎใŸใ‚ใซใฏใพใšVPCใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใ€‚ VPCใฃใฆRegionไธŠใงๆง‹็ฏ‰ใงใใ‚‹ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใฎๅ˜ไฝใจ่€ƒใˆใ‚Œใฐใ„ใ„ใ€‚
Image
AWSใ‚’ๅ‹‰ๅผทใ—ใŸใ„ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅคšใ„ใŒใ€ใใฎๆ™‚ใฏIaC(Terraform็ญ‰)ใ‚‚ใ‚ปใƒƒใƒˆใงๅ‹‰ๅผทใ—ใฆใ„ใ“ใ†ใ€‚ ใ‚ณใƒณใ‚ฝใƒผใƒซใƒใƒใƒใƒใงๆง‹็ฏ‰ใฏ็พๅ ดใงใ‚‚ๅŸบๆœฌ้žๆŽจๅฅจใซใชใฃใฆใ„ใพใ™ใ€‚ใใ†ใ„ใ†ใ‚ใ‘ใงใ€ ใ‚ณใƒณใ‚ฝใƒผใƒซใง็”ป้ขใƒใƒใƒใƒใฏใ€ ๅญฆ็ฟ’ๅˆๆฎต้šŽใ‹ใ‚‰ใ‚‚ๅŸบๆœฌ้ฟใ‘ใŸๆ–นใŒ่‰ฏใๅˆๆฎต้šŽใ‹ใ‚‰IaCใ‚’ไฝฟใฃใฆๆง‹็ฏ‰็ฎก็†ใ‚’ใ™ใ‚‹ใฎใŒ่‰ฏใ„ใ€‚
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅ…จๅ“กLinuxใ‚’็ฟ’ๅพ—ใ—ใŸๆ–นใŒใ„ใ„ใ€‚ ใใฎใŸใ‚ใซใฏใ€ 1. LinuxใฎๅŸบ็คŽใ‚ณใƒžใƒณใƒ‰ใ‚’่ฆšใˆใ€ 2. ใ‚ตใƒผใƒใƒผใฎไป•็ต„ใฟใ‚’็†่งฃใ—ใ€ 3. ใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒˆใฎๅฎŸ่ทต็ตŒ้จ“ใ‚’็ฉใ‚€ๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚ 1. LinuxใฎๅŸบ็คŽใ‚ณใƒžใƒณใƒ‰ใ‚’่ฆšใˆใ‚‹ใƒ•ใ‚งใƒผใ‚บใงใฏใ€ ls, grep, chmod, chown
่งฃ่ชฌ) ใƒใƒƒใƒๅ‡ฆ็† ้Š€่กŒใ‹ใ‚‰ไธๅ‹•็”ฃใพใงๅน…ๅบƒใๅ‹•ใใƒใƒƒใƒๅ‡ฆ็†ใ€‚ ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅ…จๅ“กใ€ใƒใƒƒใƒๅ‡ฆ็†ใจใฏไฝ•ใงใ€ใฉใฎใ‚ˆใ†ใซๅ‹•ใ„ใฆใ„ใ‚‹ใฎใ‹ใ‚’็ŸฅใฃใŸๆ–นใŒใ„ใ„ใ€‚ ๆ—ฅใ€…ๆฑบใพใฃใŸๆ™‚้–“ใซ่‡ชๅ‹•ใงๅฎŸ่กŒใ•ใ‚Œใ‚‹ๅ‡ฆ็†ใ‚’ไธ€่ˆฌใซใƒใƒƒใƒๅ‡ฆ็†ใจใ„ใ„ใ€ Linux ใงใฏcron, AWSใงใฏEvent Bridge Scheduler
ๆœ€่ฟ‘ใฏใ‚จใƒณใ‚ธใƒ‹ใ‚ขใŒใƒ“ใ‚ธใƒใ‚นใพใงใ‚„ใ‚‹ใ“ใจใŒๅคšใใชใฃใฆใใŸ ใใ‚“ใชไธญใงใ€ใพใšใ‚จใƒณใ‚ธใƒ‹ใ‚ขใซใชใฃใŸไบบใŒใ‚„ใ‚‹ใ“ใจใฏ้–‹ๆฅญๅฑŠใ‚’ๅ‡บใ™ใ“ใจใ€‚ใ“ใ‚Œใฏ็„กๆ–™ใชใฎใงใ™ใใ‚„ใฃใŸๆ–นใŒใ„ใ„ ใใ‚ŒใจๅŒๆ™‚ใซๆŠ€่ก“ใฏใ‚‚ใกใ‚ใ‚“ใ€ๅฅ‘็ด„ใจ้‡‘่žใซ้–ขใ™ใ‚‹็Ÿฅ่ญ˜ใŒใ‚ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ (็†ๆƒณใฏๅญฆ็”Ÿใฎใ†ใกใซๆธˆใพใ›ใฆใŠใใ“ใจ
่จ˜ไบ‹ใ‚’ๆ›ดๆ–ฐใ—ใพใ—ใŸใ€‚ใƒ•ใƒญใƒณใƒˆ~ใ‚คใƒณใƒ•ใƒฉใพใงๅˆ†้‡Žใฏใจใ‚ใšๅ„ๅˆ†้‡ŽใฎๅŸบ็คŽ็Ÿฅ่ฆ‹ใ‚’ใพใจใ‚ใŸใ‚‚ใฎใซใชใ‚Šใพใ™ใ€‚็ŸฅใฃใฆใŠใใŸใ„ใ€Webใ‚จใƒณใ‚ธใƒ‹ใ‚ขใƒชใƒณใ‚ฐๅ„ๅˆ†้‡ŽใฎๅŸบ็คŽ็Ÿฅ่ฆ‹๏ฝœrio_dev zenn.dev/rio_dev/articl #zenn
่ฉณ่งฃใ‚ทใ‚นใƒ†ใƒ ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใ€ใ‹ใชใ‚Šๅˆ†ๅŽšใ„ใฎใฏใใ†ใชใ‚“ใ ใ‘ใฉใ€ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใ‚‚ใใ†ใ ใ—่ชญใ‚€ใจใ‚ตใƒผใƒใ‚ตใ‚คใƒ‰ใฎๅ…ฅ้–€ๆ›ธใจ่จ€ใฃใŸๆ„Ÿใ˜ใŒใ™ใ‚‹ใ€‚OS/CPU/IO/ใƒกใƒขใƒช/ใƒ•ใ‚กใ‚คใƒซใ‚ทใ‚นใƒ†ใƒ /ใƒ‡ใ‚ฃใ‚นใ‚ฏetcใใ†่จ€ใฃใŸๅŸบ็คŽใซ็›ฎใ‚’่ƒŒใ‘ใฆใใŸไบบใฏ7000ๅ††ๅ‡บใ—ใฆ่ฒทใ†ไพกๅ€คใฏใ‚ใ‚‹ใจๆ€ใ†ใ€‚
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใซไธ‰ๅฎใ‚ใ‚Šใ€‚ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ€ใ‚คใƒณใƒ•ใƒฉ ใฎ3ๅˆ†้‡Žใฏใใ‚Œใžใ‚ŒๆŠผใ•ใˆใฆใŠใ‘ใฐ้–“้•ใ„ใชใ็ขบๅฎŸใซใƒ—ใƒฉใ‚นใซใชใ‚‹ใจ่จ€ใฃใฆใ„ใ„ใ€‚ gwใซไบˆๅฎšใŒใชใใใ‚Œใžใ‚Œใง็–Žใ„ๅˆ†้‡ŽใŒใ‚ใ‚‹ไบบใฏใ‚ญใƒฃใƒƒใƒใ‚ขใƒƒใƒ—ใ—ใฆใŠใ„ใŸใปใ†ใŒใ„ใ„ใ€‚
ใƒ•ใƒญใƒณใƒˆใฎไบบใŒใ‚ญใƒฃใƒƒใ‚ทใƒฅใจใ„ใ†ใจใƒ–ใƒฉใ‚ฆใ‚ถใซไฟๅญ˜ใ•ใ‚Œใ‚‹ใ‚‚ใฎใ ใ‘ใ‚’ใ‚ญใƒฃใƒƒใ‚ทใƒฅใจ่จ€ใฃใฆๆ€ใ„ๆตฎใ‹ในใŒใกใชๅฐ่ฑกใ ใŒใ€ๅคงใพใ‹ใซ่ฆ‹ใฆใ‚‚DB,APๅฑคใชใฉใ‚ญใƒฃใƒƒใ‚ทใƒฅใฏ7็จฎ้กžใ‚ใ‚‹ใ€‚ๅ…จ้ƒจๆŠŠๆกใ—ใŸไธŠใงไฝฟใ„ๅˆ†ใ‘ใงใใชใ„ใจใ„ใ‘ใชใ„ใชใใจ
่งฃ่ชฌ) ใƒใƒƒใƒๅ‡ฆ็† ้Š€่กŒใ‹ใ‚‰ไธๅ‹•็”ฃใพใงๅน…ๅบƒใๅ‹•ใใƒใƒƒใƒๅ‡ฆ็†ใ€‚ ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅ…จๅ“กใ€ใƒใƒƒใƒๅ‡ฆ็†ใจใฏไฝ•ใงใ€ใฉใฎใ‚ˆใ†ใซๅ‹•ใ„ใฆใ„ใ‚‹ใฎใ‹ใ‚’็ŸฅใฃใŸๆ–นใŒใ„ใ„ใ€‚ ๆ—ฅใ€…ๆฑบใพใฃใŸๆ™‚้–“ใซ่‡ชๅ‹•ใงๅฎŸ่กŒใ•ใ‚Œใ‚‹ๅ‡ฆ็†ใ‚’ไธ€่ˆฌใซใƒใƒƒใƒๅ‡ฆ็†ใจใ„ใ„ใ€ AWSใงใฏEvent Bridge Scheduler
Image
ไปŠๅพŒไพฟๅˆฉใƒ„ใƒผใƒซใ‚’ไฝœใ‚‹ใจใใฏ APIใ‚’ๅ‘ผใถใ ใ‘/ใ‚ดใƒชใ‚ดใƒช้ซ˜้€Ÿๅ‡ฆ็†ใŒๅฟ…่ฆ -> Go ้‡‘่ž็ณป/ๅ‡ฆ็†็ณปใงlibใŒไฝฟใ„ใŸใ„ -> Pythonใ‹ใช ใ‚ขใƒ—ใƒช้–‹็™บใฏTypeScriptใ‚’ไฝฟใˆใ‚Œใฐใƒ•ใƒญใƒณใƒˆใ€œใƒใƒƒใ‚ฏใ€ใ‚คใƒณใƒ•ใƒฉใพใงใงใใฆใ—ใพใ†ใฎใงใ€TS, Go, Pythonใงใปใผไป•ไบ‹ใŒๅฎŒ็ตใ—ใฆใ—ใพใ†
Quote
๐š๐™ธ๐š˜ฬ๐™ฝ
@rio_devops
ไปŠๆ—ฅใฏPythonใง่‡ชๅ‹•ๅŒ–ใƒ„ใƒผใƒซใ‚’ไฝœใฃใŸ pdfใ‚’ไธญๅคฎใง2ๅˆ†ๅ‰ฒใ—ใฆpdfใซ็”Ÿๆˆใ—็›ดใ™ๅ‡ฆ็†ใ ใ‘ใฉ ไปฎๆƒณ็’ฐๅขƒใ‚’ใ™ใใซๆง‹็ฏ‰ใงใใ‚‹ใ‹ใ‚‰ใ‚ฐใƒญใƒผใƒใƒซ็’ฐๅขƒใ‚’ๆฑšใ•ใšใซๆธˆใ‚€ใ—ใ€ไพฟๅˆฉใชlibใŒๅคšใใฆPythonใฎไพฟๅˆฉใ•ใ‚’ๅ†็ขบ่ช Goใจใ‹ใ ใจๅ…จ้ƒจไธ€ใ‹ใ‚‰ๅฎŸ่ฃ…ใจใ‹ใซใชใ‚‹ใ‚“ใ ใ‚ใ†ใ‹ใƒปใƒป
ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใ‚’ๅฏ่ฆ–ๅŒ–ใ—ใฆๆดป็”จใ—ใŸใ„ไบบใฏๅ…จๅ“กmetabaseใ‚’ไฝฟใฃใŸๆ–นใŒใ„ใ„ใ€‚ metabaseใฏOSSใชใฎใงdockerใงๅ‹•ใใ—ใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใฎๆ“ไฝœใ‚‚็›ดๆ„Ÿ็š„ใงใ„ใ„ๆ„Ÿใ˜ใ€‚ ใ“ใ‚ŒใŒใ‚ใ‚Œใฐใƒ‡ใƒผใ‚ฟๆŠฝๅ‡บใ‚‚ๆฐ—่ปฝใงๆฏŽๅ›žใ‚จใƒณใ‚ธใƒ‹ใ‚ขใซ้ ผใ‚“ใงSQLใ‚’ๅฉใใ‚ˆใ†ใชใ“ใจใ‚’ใ—ใชใใฆใ„ใ„ใ€‚
ไธ€ไผ‘ใƒฌใ‚นใƒˆใƒฉใƒณใŒ2ใƒถๆœˆใงNext.jsใฎๆŽก็”จใ‚’ๅ–ใ‚Šใ‚„ใ‚ใฆRemixใซใ€‚ ๆœ€่ฟ‘่‡ชๅˆ†ใฎๅ‘จใ‚Šใงใ‚‚Nextโ†’Remixใซไน—ใ‚Šๆ›ใˆใ‚‹ไบ‹ไพ‹ใ‚’ใกใ‚‰ใปใ‚‰่žใใ‚ˆใ†ใซใชใฃใŸใญใ€‚
Next.jsใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚’ๅญฆใณใŸใ„ไบบใฏๅคšใ„ ๅŸบ็คŽใ ใ‘ใ‚’ๅˆ‡ใ‚ŠๆŠœใ„ใŸใ‚นใƒฉใ‚คใƒ‰ใŒใ‚ใ‚‹ใฎใงๅ‚็…งใ—ใฆใปใ—ใ„ใ€‚10ๅˆ†็จ‹ๅบฆใฎLTใ ใฃใŸใ‘ใฉๅ†…ๅฎนใฏๅŸบ็คŽๅฏ„ใ‚Šใชใฎใงใ™ใ่ชญใฟ็ต‚ใ‚ใ‚Œใ‚‹ใ‹ใ‚‚๏ผŸ
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๆŠ€่ก“ๅŠ›ใ‚’้ซ˜ใ‚ใ‚Œใฐๅคšใใฎๅ•้กŒใŒ่งฃๆถˆใ™ใ‚‹ใ€‚ ๆŠ€่ก“ใฏๆœฌๆฅๆฅฝใ—ใ„ใ‚‚ใฎใชใฎใงใ€ๆฅญๅ‹™ๅพŒใ‚‚ๅœŸๆ—ฅใงใ‚‚่งฆใ‚‹ใจใฉใ‚“ใฉใ‚“ๆ…ฃใ‚Œใฆใใฆใ€ๆœฌๆฅญใงใ‚‚ๅฎŸ่ฃ…ใฏ้€Ÿใใชใ‚‹ใจๆ€ใ†ใ€‚ ๅ‘ฝใฏใชใ‚“ใจใชใ็”Ÿใใ‚‹ใŸใ‚ใงใฏใชใใ€็‡ƒใ‚„ใ—ๅฐฝใใ™ใŸใ‚ใซใ‚ใ‚‹ใ€‚
TiDBใƒžใ‚ธใงๆœ€ๅผท่ชฌใƒปใƒป ๅˆ†ๆ•ฃSQL DBใฎๅฎ‰ๅฎšๆ„Ÿใจใ‚ณใ‚นใƒˆ้ขใงใ‚‚ใƒกใƒชใƒƒใƒˆใŒๅคงใใ„ใ—ใ€with Chummyใ‚‚ไปŠๅพŒใจใ‚‚TiDBใซใŠไธ–่ฉฑใซใชใ‚ใ†ใจๆ€ใฃใฆใ„ใ‚‹ใ€‚ ่ถฃๅ‘ณ้–‹็™บWebใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎใปใผ0ๅ††ใ‚คใƒณใƒ•ใƒฉๆง‹ๆˆ qiita.com/mazrean/items/ #Qiitaใ‚ขใƒ‰ใ‚ซใƒฌ #Qiita via
AWSใจใ‹IaCใ€่ˆˆๅ‘ณใ‚ใ‚‹ใ‚“ใงใ™ใ‘ใฉใฉใ†ใ‚„ใฃใฆๅ‹‰ๅผทใ—ใŸใ‚‰ใ„ใ„ใ‚“ใงใ™ใ‹ใญ๏ผŸใจๅ‹‰ๅผท็†ฑๅฟƒใชๆ–นใ‹ใ‚‰ใฎใ”่ณชๅ•ใ‚’ใ„ใŸใ ใใ“ใจใŒๅข—ใˆใŸใ€‚ AWSใ‚’ใ‚„ใฃใฆใ„ใไปฒ้–“ใŒๅข—ใˆใ‚‹ใฎใฏๅฌ‰ใ—ใ„ใ“ใจใงใ€ใ‚‚ใฃใจใงใใ‚‹ไบบใŒๅคšใใชใฃใฆๆฌฒใ—ใ„ใฎใง ๆ™‚้–“ใชใ„ไบบใจใ‚ใ‚‹ไบบๅ‘ใ‘ใซๅ‹‰ๅผทๆณ•ใ‚’ๆ•ด็†ใ—ใŸใฎใงๅ‚่€ƒใซใ—ใฆใฟใฆ(ๆœ€็Ÿญ2h~ ใง้”ๆˆๅฏ่ƒฝ)ใ€‚
ๅ‰ๆ: ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅ…จๅˆ†้‡Žๅ‹‰ๅผทใ—ใŸๆ–นใŒใ„ใ„ใ€ใจ่จ€ใ†ๅ‰ๆใงใ€ DBโ†’SQLใฎไป•ๆง˜ใŒใšใฃใจไธ€็ท’ ใ‚คใƒณใƒ•ใƒฉโ†’CPU/ใƒกใƒขใƒชใชใฉๅŸบ็คŽใŒไธ€็ท’ ใƒžใƒใ‚ธใƒกใƒณใƒˆโ†’ไบบใจใฎๅ‘ใๅˆใ„ๆ–น/ๆŠ€่ก“็ทๅˆ ใ“ใ“ใพใงใฏ็ตๆง‹ๅคๅ…ธใชๅฐ่ฑกใ€‚ ใƒ•ใƒญใƒณใƒˆโ†’ๅค‰ๅŒ–ใŒๆฟ€ใ—ใๆ—ฅใ€…ๅธๅŽๅฟ…่ฆใจ่จ€ใ†ๅฐ่ฑกใงใ€ใ ใ‹ใ‚‰ใƒ•ใƒญใƒณใƒˆใฏใ‚„ใฃใฆใ„ใฆๆฅฝใ—ใ„๐Ÿ˜Š
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๅ…จๅ“กใ‚คใƒคใƒ›ใƒณ/ใƒ˜ใƒƒใƒ‰ใƒ›ใƒณใซใ“ใ ใ‚ใฃใŸๆ–นใŒใ„ใ„ใ€‚ 1ไธ‡ใง่ฒทใˆใ‚‹ใ‚จใƒณใƒˆใƒชใƒผๅ“ใงใ‚‚ใ€ ใ€Œ้จ’ใŒใ—ใ„ใ‚ชใƒ•ใ‚ฃใ‚นใซใ„ใฆ่‡ชๅˆ†ใฎๅฃฐไปฅๅค–็›ธๆ‰‹ใซไฝ•ใ‚‚่žใ“ใˆใชใ„ใƒฌใƒ™ใƒซใ€ ใซใชใ‚‹ใƒ˜ใƒƒใƒ‰ใƒ›ใƒณใŒใ€ŒPowerconf H700ใ€ใชใฎใญใ€‚่‡ชๅˆ†ใ‚‚ๆ„›็”จใ•ใ›ใฆใ‚‚ใ‚‰ใฃใฆใพใ™๐Ÿ™‚
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏๆŠ€่ก“ใ ใ‘ใงใชใใ€ๅค–่ฆ‹ใซใ‚‚ๆฐ—ใ‚’ใคใ‘ใŸๆ–นใŒใ„ใ„ใ€‚ ใƒปไฟก้ ผใ‚„ๅฐŠๆ•ฌใ‚’ๅพ—ใ‚„ใ™ใ„ ใƒปใƒชใƒผใƒ€ใƒผใซๆŠœๆ“ขใ•ใ‚Œใ‚„ใ™ใ„ ใƒปไบบ่„ˆใ‚„ไบบ้–“้–ขไฟ‚ใŒๅบƒใŒใ‚Šใ‚„ใ™ใ„ ใƒปใƒ–ใƒซใƒผใ‚ชใƒผใ‚ทใƒฃใƒณใงใ‚ใ‚‹ ใใ†ๆ€ใ†ใจใ€ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใŒๅค–่ฆ‹ใซๆŠ•่ณ‡ใ™ใ‚‹ใ“ใจใฏใ‚ญใƒฃใƒชใ‚ขใจๅ…จไฝ“ใฎQOLๅ‘ไธŠใซใคใชใŒใ‚‹ใ€‚
Donโ€™t use Express, use Hono ใฎ่จ€่‘‰ใฃใฆNodeใฎไฝœ่€…ใŒ่จ€ใฃใŸ่จ€่‘‰ใชใ‚“ใ ใช...ใ€‚ใใ†่€ƒใˆใ‚‹ใจใ“ใ‚Œใฃใฆๆœฌๅฝ“ใซใ™ใ”ใ„ใ“ใจใ ใ‚ˆใญ
Next.jsใ‚’ใ‚„ใ‚ŠใŸใ„ไบบใฏๅคšใ„ใŒ Nextใ‚’ใพใจใ‚‚ใซๆ‰ฑใฃใฆใ„ใใซใฏใ€ HTML/CSS็ญ‰ใƒ•ใƒญใƒณใƒˆๆŠ€่ก“ใธใฎ็†่งฃ ใ‚ตใƒผใƒ(Linuxใ‚„DB, Network)ใฎ็†่งฃ JavaScript, TypeScript, Reactใธใฎ็†่งฃ่พบใ‚ŠใŒๅฟ…่ฆใ ใญใ€‚ใŸใ ่ถฃๅ‘ณใชใ‚‰ๆฐ—ๆฅฝใซใ‚„ใ‚Œใฐ๏ผŸใจๆ€ใฃใฆใ‚‹ใ€‚
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใŒๅ ฑใ‚ใ‚Œใšใƒกใƒณใ‚ฟใƒซใŒๅผฑใ„ใจใ€็งใฏใƒ€ใƒกใ ใ€ใจ่‡ชๅทฑๅฆๅฎšใ‚’ๅง‹ใ‚ใ‚‹ใ‚ˆใ†ใซใชใ‚‹ใ€‚็งใฏใƒ€ใƒกใ ใ€ใฏ้Šๆˆฏ็Ž‹ใฎ็ฆๆญขใ‚ซใƒผใƒ‰ไธฆใฟใซๅจๅŠ›ใŒๅผทใ„ใƒฏใƒผใƒ‰ใงใ€่จ€ใ‚ใชใ„ๆ–นใŒใ„ใ„ใ€‚่จ€่‘‰ใจใ„ใ†ใฎใฏ็™บใ—ใŸ็žฌ้–“ใซใƒ“ใƒซใƒ‰ใŒ่ตฐใ‚‹ใ€‚
่งฃ่ชฌ: React.js(CSR), Next.js(SSR)ใ‚’AWSใงๆง‹็ฏ‰ใ™ใ‚‹ๆ–นๆณ• JavaScript่ฃฝใƒ•ใƒญใƒณใƒˆ/ ใƒ•ใƒซใ‚นใ‚ฟใƒƒใ‚ฏใ‚ขใƒ—ใƒชใ‚’AWSใงใƒ›ใ‚นใƒˆใ™ใ‚‹ใ“ใจใŒๅคšใใชใฃใŸใ€‚SPA/ SSRใใ‚Œใžใ‚Œใงๆ–นๆณ•ใ‚’ใŠใ•ใ‚‰ใ„ใ—ใฆใฟใ‚ˆใ†ใ€‚ React.js(CSR)ใฏS3 + CloudFrontใ€Next.js(SSR)ใฏECS + S3 + CloudFront +ใงใƒ›ใ‚นใƒˆใ™ใ‚‹ใฎใŒ้‰„ๆฟใฎๆ–นๆณ•ใ€‚
Image
Image
AWSใ‚’ๅ‹‰ๅผทใ—ใŸใ„ไบบใฏๅคšใ„ใŒใ€ใ„ใฃใŸใ„ไฝ•ใ‹ใ‚‰ๅง‹ใ‚ใ‚Œใฐ่‰ฏใ„ใฎใ‹๏ผŸ ใฉใฎAWS็พๅ ดใงใ‚‚ไฝฟ็”จใŒ้ ปๅ‡บใ—ใฆใ„ใฆๅŸบ็คŽใจใ—ใฆใ‚‚ใพใšๆŠ‘ใˆใŸใ„ใ‚‚ใฎใฏๅคงไฝ“ๆฌกใฎใจใŠใ‚Šใ ใ‚ใ†ใ€‚ IAM: ๆจฉ้™ VPC: ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏ CloudWatch: ใƒญใ‚ฐ ECR+ECS: image ็ฝฎใๅ ด๏ผ‹ใ‚ตใƒผใƒ Lambda: ้–ขๆ•ฐ้ง†ๅ‹•ๅž‹ใฎๅฎŸ่กŒ็’ฐๅขƒ
่‰ฏ่จ˜ไบ‹ใ€‚ๆœฌๅฝ“ใซwebๆจ™ๆบ–ๅคง็ตฑไธ€ๆ™‚ไปฃใŒๆฅใ‚‹ใ‹ใ‚‚ Honoใฎๆ‰ใˆๆ–นใ€ใพใŸใฏNext.jsใจใฎ็ต„ใฟๅˆใ‚ใ›ๆ–น
ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใŒใƒ“ใ‚ธใƒใ‚นใพใง่ธใฟ่พผใ‚“ใง่กŒใใŸใ‚ใซใฏใพใšๆŠ€่ก“ๅŠ›ใŒ้ซ˜ใ„ๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚ ใƒ•ใƒญใƒณใƒˆใ€ใƒใƒƒใ‚ฏใ€ใ‚คใƒณใƒ•ใƒฉใŒใ‚ใ‹ใ‚ŠๅคงๆŠตใฎใ“ใจใ‚’ไธปๅฐŽใงใใ‚‹ใ‚ˆใ†ใซใชใ‚‹ใจ ใ‚ใจใฏใฉใ†ใ„ใ†UXใŒใ„ใ„ใ‹ใจใ‹่ชฒ้‡‘ใƒญใ‚ธใƒƒใ‚ฏใ‚’ใฉใ†ใ™ใ‚‹ใ‹ใจใ‹็ดฐใ‹ใ„้ƒจๅˆ†ใซใ“ใ ใ‚ใฃใฆใ„ใ‘ใ‚Œใ‚‹ใ€‚
ใ‚นใ‚ฟใƒผใƒˆใ‚ขใƒƒใƒ—ใ€ใƒ•ใƒญใƒณใƒˆ/ใƒใƒƒใ‚ฏใ‚’ใ‚ใ‘ใšใซNext.jsใงไฝœใ‚Œใฐใ„ใ„ใ‚„ใ‚“ใจๆ€ใ†ใ€‚ ไพ‹ใˆใฐGoใจใ‹ใŒๅ…ฅใฃใฆใ„ใ‚‹ใจGoใ‚จใƒณใ‚ธใƒ‹ใ‚ขใซๅŠ ใˆใฆใƒ•ใƒญใƒณใƒˆใ‚จใƒณใ‚ธใƒ‹ใ‚ขใ‚’ๅˆฅใซๅ–ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚ Nextใงใƒ•ใƒซใ‚นใ‚ฟใƒƒใ‚ฏใฏๅฑ…ใฆใ‚‚ใ€Next/Goใฎไธกๆ–นใซ็‰นๅŒ–ใ—ใŸใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฏใปใผใฟใŸใ“ใจใŒใชใ„... ใ€‚
IaC/ Terraform ใ‚’ๅง‹ใ‚ใŸใ„ใ‘ใฉใ€ๅฎŸ้š›ใฉใ‚“ใชใƒฌใƒใ‚ธใƒˆใƒชๆง‹ๆˆใงๅง‹ใ‚ใŸใ‚‰ใ„ใ„ใฎ๏ผŸ ็พๅ ดใงไฝฟใ‚ใ‚Œใ‚‹ๆง‹ๆˆใฃใฆๅฎŸใฏใƒ†ใƒณใƒ—ใƒฌใŒใ‚ใ‚‹ใ€‚ใƒใƒƒใจใ—ใŸไบบใฏ็ขบ่ชใ—ใฆใฟใ‚ˆใ†๐Ÿ”ฝ ใพใšใ€็’ฐๅขƒ็‹ฌ็ซ‹ๆ€งใฎใŸใ‚ใซdev, stg, prdใจใใ‚Œใžใ‚Œใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใ‚’ๅˆ‡ใ‚‹ใ€‚ๅ„้…ไธ‹ใซใ‚ใ‚‹locals.tf ใจใ„ใ†ใƒ•ใ‚กใ‚คใƒซใซlocal
Image