[AWS] elastic beanstalk: ์‹œ์ž‘

elastic beanstalk๋Š” ์›น์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•œ ์ข…ํ•ฉ ํŒจํ‚ค์ง€๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

์ด๊ฒŒ ๋ญ ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์€ ์•„๋‹Œ๋ฐ, ๊ธฐ๋ณธ์ ์ธ ์„œ๋ฒ„ ๊ตฌ์ถ•๋ถ€ํ„ฐ ์ŠคํŽ™ ์ž๋™์กฐ์ ˆ, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ๊นŒ์ง€ ์ž๋™์œผ๋กœ ์„ธํŒ…์„ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋‹นํžˆ ํŽธ๋ฆฌํ•˜๋‹ค ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ธฐ๋ณธ ์†Œ์Šค๋งŒ ์˜ฌ๋ฆฌ๋ฉด ๋‚˜๋จธ์ง€๋Š” ๋Œ€๋ถ€๋ถ„ ์•Œ์•„์„œ ํ•ด์ค€๋‹ค.

๋ณธ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹œ์ž‘๋งŒ ํ•œ๋ฒˆ ํ•ด๋ณด๊ฒ ๋‹ค.




์•ฑ ๋งŒ๋“ค๊ธฐ

๋จผ์ € ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณด์ž.
์ด๋ฆ„์„ ์ ์–ด์ฃผ๊ณ ,

์‚ฌ์šฉํ•  ํ”Œ๋žซํผ์„ ๊ณ ๋ฅธ๋‹ค.
Node.js, Java, Ruby ๋“ฑ์˜ ๋ฉ”์ด์ €ํ•œ ํ™˜๊ฒฝ์€ ๋Œ€๋ถ€๋ถ„ ์ง€์›ํ•˜๋ฉฐ, ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋„ Docker๋กœ ์ง์ ‘ ์˜ฌ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค.

์ด๋Œ€๋กœ ์ƒ์„ฑ์„ ํ•˜๋ฉด

๋ช‡๋ถ„์ •๋„ ๊ฑธ๋ฆด ๊ฒƒ์ด๋‹ค.

๋”ฐ๋‹จ




์†Œ์Šค ์—…๋กœ๋“œํ•˜๊ธฐ

์ด๋ฒˆ์—” ์„œ๋ฒ„ ์†Œ์Šค๋ฅผ ์ž‘์„ฑํ•ด์„œ ์ €๊ธฐ์— ๋ฐฐํฌํ•ด๋ณด์ž.

์•„๋ž˜์—์„œ ์‚ฌ์šฉํ•  ์–ธ์–ด์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์„œ ์„œ๋ฒ„๋ฅผ ์ž‘์„ฑํ•˜์ž.
๋‹จ์ˆœ ์„œ๋ฒ„๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋นˆ์ฆˆํ†ก ์ „์šฉ ์„ค์ •ํŒŒ์ผ๊ฐ™์€ ๊ฒƒ๋„ ์ข€ ๋„ฃ์–ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/GettingStarted.DeployApp.html

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ํ•„์š”ํ•œ ๋งŒํผ ์ˆ˜์ •ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.
์ €๊ธฐ์„œ ๋นˆ์Šคํ†ก์ด ์‹คํ–‰ํ•  ๋ฉ”์ธ ์†Œ์Šค๋Š” app.js๋‹ค ์ €๊ฒƒ๋งŒ ์ ์ ˆํžˆ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

๋‚˜๋Š” ๋Œ€์ถฉ 2๊ฐœ์˜ ๊ฒฝ๋กœ๋งŒ ๊ฐ€์ง€๋Š” ๋‹จ์ˆœํ•œ ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.

const port = process.env.PORT || 3000;
const fs = require("fs");

const log = function (entry) {
    fs.appendFileSync(
        "/tmp/sample-app.log",
        new Date().toISOString() + " - " + entry + "\n"
    );
};

const express = require("express");
const app = express();

app.get("/", async (req, res) => {
    log("/ ํƒ");
    res.json({ foo: "bar", text: "์œผ์•…" });
});

app.get("/test", async (req, res) => {
    log("/test ํƒ");
    res.json({ foo: "test", text: "ํ…Œ์ŠคํŠธ" });
});

app.listen(port, () => {
    console.log("## ์„œ๋ฒ„ ์‹คํ–‰");
});

์ทจํ–ฅ๊ป ๊ตฌ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋นˆ์Šคํ†ก ๊ด€๋ฆฌํŽ˜์ด์ง€๋กœ ๊ฐ€์„œ

์—…๋กœ๋“œ ๋ฐ ๋ฐฐํฌ

๋ฐฉ๊ธˆ ์†Œ์Šค๋ฅผ nodejs๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ๋กœ ์••์ถ•ํ•ด์„œ ์—…๋กœ๋“œํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์•ฝ๊ฐ„์˜ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š”๋ฐ,

๋‹ค ๋˜๊ณ ๋‚˜์„œ ๋„๋ฉ”์ธ์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด

์ž‘์„ฑํ•œ๋Œ€๋กœ ์ž˜ ๋ฐ˜์˜์ด ๋˜์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค.

๋Œ€์ถฉ ์ด๋Ÿฐ์‹์œผ๋กœ ์จ๋จน์œผ๋ฉด ๋œ๋‹ค.

๋‹ค๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ™์€๊ฑด RDS๋‚˜ ๋‹ค์ด๋‚˜๋ชจ ๋“ฑ์œผ๋กœ ๋ณ„๋„ ๊ตฌ์ถ•ํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.



์ฐธ์กฐ
https://www.bespinglobal.com/introduction-aws-beanstalk/
https://www.slideshare.net/awskorea/aws-elastic-beanstalk-aws-aws-devday2018
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/GettingStarted.html