๐ŸŒฑ Infra 41

[keycloak ๋ง›๋ณด๊ธฐ #1] Keycloak ๋กœ์ปฌ์—์„œ ๋„์šฐ๊ณ  Realm ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

๊ฐœ์š”Keycloak์€ ์˜คํ”ˆ์†Œ์Šค(Apache License2.0) ID ๋ฐ ์—‘์„ธ์Šค ๊ด€๋ฆฌ ์†”๋ฃจ์…˜์ด๋‹ค.์ด๊ฒƒ๋งŒ ์•Œ๊ณ  ์ผ๋‹จ ์‹œ์ž‘ํ•ด๋ณด์ž Keycloak ๋„์ปค๋กœ ๋„์›Œ๋ณด๊ธฐKeycloak์€ ์„ค์น˜ ๋งค๋‰ด์–ผ์ด ์ •๋ง ์ž˜๋˜์–ด์žˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ์— ์ •๋ง ์ž์„ธํžˆ ์ž˜ ์ž‘์„ฑ๋˜์–ด์žˆ์–ด ๋ฌธ์„œ์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•ด๋ณด์ž.docker run -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak:24.0.4 \ start-devdocker run ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ keycloak์„ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค. http://localhost:8080 ์— ์ ‘์†ํ•˜๊ณ  ๋กœ๊ทธ์ธํ•ด๋ณด์ž. (id..

์ธ์ฆ ๋ฐ ๊ถŒํ•œ ํ”„๋กœํ† ์ฝœ OAuth 2.0, OpenID Connect, SAML ๊ทธ๋ฆฌ๊ณ  Zero Trust์— ๋Œ€ํ•˜์—ฌ

์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ์ž์„ธํ•œ ๋‚ด์šฉ ๋ณด๋‹ค๋Š” ๊ฐœ๋…๋ง›๋ณด๊ธฐ๐Ÿ‘… ์ˆ˜์ค€์˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.  ๐Ÿ“Œ OAuth 2.0, OpenID Connect, SAML ๊ฐ„๋‹จ ๊ฐœ๋… ์ •๋ฆฌ OAuth 2.0: ๊ถŒํ•œ ๋ถ€์—ฌ์— ์ค‘์ ์„ ๋‘” ํ”„๋กœํ† ์ฝœOpenID Connect: OAuth 2.0์„ ํ™•์žฅํ•˜์—ฌ ์ธ์ฆ ๋ ˆ์ด์–ด ์ถ”๊ฐ€SAML: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•œ XML ๊ธฐ๋ฐ˜ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ ๊ตฌ๋ถ„OAuth 2.0OpenID ConnectSAML๋ชฉ์ ๊ถŒํ•œ ๋ถ€์—ฌ(Authorization)์‚ฌ์šฉ์ž ์ธ์ฆ(Authentication)์‚ฌ์šฉ์ž ์ธ์ฆ(Authentication)๋ฐ์ดํ„ฐ ํ˜•์‹JSONJSONXML์‚ฌ์šฉ ์‚ฌ๋ก€API ์ธ์ฆ, ๋ชจ๋ฐ”์ผ ์•ฑ์†Œ์…œ ๋กœ๊ทธ์ธ, API ์ธ์ฆ๋ชจ๋ฐ”์ผ ์•ฑ, SPA, API ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์— ์ ํ•ฉ๊ธฐ์—… SSO, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์ฆ์ „ํ†ต์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ๋ณต์žก์„ฑ..

[ECS exec log ec2] ์Šคํฌ๋ฆฝํŠธ

ECS exec๋„ ๋ถˆํŽธํ•˜๊ณ , ๋กœ๊ทธ๋ฅผ ๋ณด๋Š”๊ฒƒ๋„ ๋ถˆํŽธํ•˜๊ณ  ec2 ๋งค๋ฒˆ ์ฐพ์•„๋“ค์–ด๊ฐ€๋Š”๊ฒƒ๋„ ๊ท€์ฐฎ๊ณ  ํž˜๋“ค์–ด์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.. ๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ... ๐Ÿฅฒ Step 1 ) ECS ์„œ๋น„์Šค ์„ค์ • ๊ฐ€์žฅ ๋จผ์ €, enableExecuteCommand ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค. aws ecs update-service --cluster ${ํด๋Ÿฌ์Šคํ„ฐ์ด๋ฆ„} --services ${์„œ๋น„์Šค์ด๋ฆ„} --enable-execute-command true enableExecuteCommand ํ™œ์„ฑํ™” ํ›„์—๋„ ๋ญ”๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์ด๊ฒƒ์„ ์‹คํ–‰ํ•ด๋ณด์ž (amazon-ecs-exec-checker) Step2) ๋กœ์ปฌ PC์— awscli, Session Manager ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” awscli, session Manag..

ECS๋ฅผ ์“ฐ๋ฉด์„œ ๋ถˆํŽธํ•œ์  (ํ›„๊ธฐ)

ECS๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ณ , ๊ตฌ์„ฑํ•œ์ง€ 1๋‹ฌ์ด ๊ฑฐ์˜ ๋‹ค ๋˜์–ด๊ฐ„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ...... ์ƒ๊ฐ์ง€๋„ ๋ชปํ•˜๊ฒŒ ๋„ˆ๋ฌด ๋ถˆํŽธํ•œ์ ์ด ๋งŽ๋‹ค. ใ… ใ…  ์ง์ ‘ ๊ฒช์€ ECS์˜ ๋ถˆํŽธํ•œ ์ ๋“ค์„ ๋‚˜์—ดํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. 1. ๊ด€๋ฆฌํˆด ๋ถ€์กฑ ..... ์˜ค๋ฅ˜ ๋ฐœ์ƒํ–ˆ์„๋•Œ, ์–ผ๋ฅธ ๋“ค์–ด๊ฐ€์„œ ๋กœ๊ทธ๋ฅผ ๋ด์•ผํ•˜๋Š”๋ฐ, ๋กœ๊ทธ๋ณด๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค.... ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋กœ๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด ์–ผ๋ฅธ ec2 ์ ‘์†ํ•ด์„œ ๋ด์•ผํ•œ๋‹ค. ๋ณ„๋„์˜ ๋กœ๊ทธ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋‚˜๋Š” ๊ทธ๋ƒฅ cloudwatch logs์—์„œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ (๋ถˆํŽธ), ec2์— ์ง์ ‘ ๋“ค์–ด๊ฐ€์„œ docker logs๋กœ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๊ณ  ์žˆ๋‹ค.(์ด๊ฒƒ๋„ ๋ถˆํŽธ) k8s๋Š” k9s๋กœ ์—„์ฒญ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋กœ๊ทธ๋ฅผ ๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ง์ด๋‹ค.. ์ด๋Ÿฐ ์‹œ๋Œ€์— ์‚ด๊ณ ์žˆ๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ecs๋Š” ๋„ˆ๋ฌด๋‚˜๋„ ๋ถˆํŽธํ•˜๋‹ค. ์ด๋ฆ„ ๊นƒํ—™๋ ˆํฌ ๋‹จ์  copliot ..

[CodePipeline] ECR์„ ์†Œ์Šค๋กœ ํ•ด์„œ CodeDeploy๋กœ ECS ๋ฐฐํฌํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” :) ์˜ค๋ž˜๊ฐ„๋งŒ์˜ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ECR์— ์ด๋ฏธ์ง€๊ฐ€ Push ๋˜๋ฉด, ECS์„œ๋น„์Šค ๋ฐฐํฌ ๋ฐฉ์‹(blue/green, rolling)์— ๋”ฐ๋ผ ECS์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ, ECR ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— latest ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ๋„์ปค์ด๋ฏธ์ง€๊ฐ€ push ๋˜๋ฉด, ๋ฐ”๋กœ ๋ฐฐํฌ๋˜๊ฒŒ๋”... ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. AWS ๊ณต์‹ ๋ฌธ์„œ๋Š” ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ECS ์„œ๋น„์Šค๊ฐ€ ์ด๋ฏธ ๊ตฌ์„ฑ ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ ์•„ํ‚คํ…์ณ ๐Ÿ“Œ Step 1) CodeCommit ๊ตฌ์„ฑ codecommit์ด ์•„๋‹ˆ์–ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. Github, Bitbucket๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์ปค๋ฐ‹ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ appspec.yaml, taskdef.json ๋‘๊ฐœ์˜ ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋กค๋ง ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ im..

[k8s] ํ•™์Šต๋…ธํŠธ #1 ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œ์ž‘ํ•˜๊ธฐ

์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์•ˆ๋‚ด์„œ๋ฅผ ๋ณด๊ณ  ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค๋ช… ์ง„์งœ ์งฑ์งฑ๐Ÿ‘ โ€‹# ํ•™์Šต ๋ชฉํ‘œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋™์ž‘ ์›๋ฆฌ๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ์„ ์ตํ˜€๋ณด์ž! # ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด๋ž€? ๋ณต์žกํ•œ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ # ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ 1. Cluster: ์ค‘์•™์ œ์–ด, ๋„คํŠธ์›Œํ‚น 2. State: ์ƒํƒœ๊ด€๋ฆฌ 3. Scheduling: ๋ฐฐํฌ๊ด€๋ฆฌ 4. Roll out & Roll back : ๋ฐฐํฌ ๋ฒ„์ „๊ด€๋ฆฌ 5. Service Discovery: ์„œ๋น„์Šค ๋“ฑ๋ก ๋ฐ ์กฐํšŒ 6. volume: ๋ณผ๋ฅจ ์Šคํ† ๋ฆฌ์ง€ # ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์ข…๋ฅ˜ ์—„์ฒญ ๋งŽ๋‹ค...! DEIS, RANCHAR, MESOS, NOMAD, SWARM, K8s # ๊ทธ์ค‘์—์„œ๋„ ์™œ? ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์ธ..

k8s ๋น ๋ฅด๊ฒŒ ์„ค์น˜ํ•˜๊ธฐ

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ๋‹จ์ผ๋…ธ๋“œ์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ  * ์„ค์น˜ OS: centos-release-7-9.2009.1.el7.centos.x86_64 1. kube ์„ค์น˜ ์•„๋ž˜์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ช…๋ น์–ด๋ฅผ ์ญ‰ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ผ๋„ ๋น ํŠธ๋ฆฌ๋ฉด kubeadm init์— ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋น ํŠธ๋ฆฌ๋Š” ๊ฒƒ ์—†์ด ์ž˜ ๋”ฐ๋ผ์˜ค์„ธ์š”!๐Ÿฅฒ # ๋Ÿฐํƒ€์ž„ docker ์„ค์น˜ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum update -y && sudo yum install -y contain..

[k8s] ERROR - The connection to server was refused

์ •๋ง ์˜ค๋ž˜๊ฐ„๋งŒ์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ณต๋ถ€ํ•˜๋Š”๋ฐ... ์•„์ฃผ ์˜ค๋ž˜๊ฐ„๋งŒ์ด๋ผ ๋˜ ์˜ค๋งŒ๊ฐ€์ง€ ์˜ค๋ฅ˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค ๐Ÿฅฒ.... ์‚ถ์ด๋ž€..์‚ถ์€...๋‹ฌ๊ฑ€์ด๋‹ค... ์˜ค๋ฅ˜๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค. [root@ip-10-77-110-113 docker]# kubectl run myapp --image=myapp-image --port=8080 The connection to the server localhost:8080 was refused - did you specify the right host or port? ์ด ์˜ค๋ฅ˜๋Š” ์ €๋Š” ์ด๋ ‡๊ฒŒ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. 1) kube init ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ kubectl ์ดˆ๊ธฐ ์„ค์ •์„ ํ•ด๋ด…์‹œ๋‹ค. ์• ์ดˆ์— kubectl ๋ช…๋ น์–ด๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ์š”.! kubeadm init 2) ์„ค์ •ํŒŒ์ผ์„ ์˜ฎ๊ฒจ์ค์‹œ๋‹ค..

ECS ๊ธฐ์ดˆ, ๊ฐœ๋…์žก๊ธฐ ๐Ÿ‘๐Ÿป๐Ÿ‘๐Ÿป๐Ÿ‘๐Ÿป

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ˜Š๐Ÿ˜Š๐Ÿ˜Š๐Ÿ˜Š ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ECS์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ๋‹ค์–‘ํ•œ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ด์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด์ด ์กด์žฌํ•˜๊ณ , ์ตœ๊ทผ์—๋Š” Kubernetes(k8s)๊ฐ€ ๊ฑฐ์˜ ๋ฉ”์ธ ์ŠคํŠธ๋ฆผ์ธ๋ฐ์š”, AWS์—๋„ EKS๋ผ๋Š” ๊ด€๋ฆฌํ˜• ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, AWS๋Š” EKS๋ณด๋‹ค ECS(Amazon Elastic Container Service)๋ฅผ ๋” ๋ฐ€๊ณ ์žˆ๋Š”๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋ฌดํŠผ! ์ง€๊ธˆ๋ถ€ํ„ฐ ECS์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค!! ECS๋Š” ๋‹ค๋ฅธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด์— ๋น„ํ•ด ์–ด๋–ค ์žฅ์ ์ด ์žˆ์„๊นŒ์š”? 1. ๊ฐœ๋…์ด ์ •๋ง ๊ฐ„๋‹จํ•˜๊ณ , (์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ณด๋‹ค ์ดํ•ดํ•˜๊ธฐ ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค.) 2. ๋‹ค๋ฅธ AWS์„œ๋น„์Šค์™€ ํ†ตํ•ฉ์ด ๊ฐ„ํŽธํ•˜๊ณ , (์˜ˆ์ œ๋„ ์ •๋ง ๋งŽ์Šต๋‹ˆ๋‹ค.) 3. aws Copilot ๊ณผ ๊ฐ™์€ ECS๋ฅผ ์œ„ํ•œ ์ „์šฉ CLI๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก , ..

Amazon Linux2 ์— ํƒ€๋ธ”๋กœ(Tableau) ์„ค์น˜ํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ™‹‍โ™€๏ธ๐Ÿ™‹ ์˜ค๋Š˜์€ ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๊ณ  ๊ฐ€์žฅ ํŒŒ์›Œํ”Œํ•œ BIํˆด์ธ, ํƒ€๋ธ”๋กœ(Tableau)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ €, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํƒ€๋ธ”๋กœ๋ฅผ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํƒ€๋ธ”๋กœ๋Š” ์ตœ์†Œ 4์ฝ”์–ด CPU(AWS vCPU 8๊ฐœ์— ํ•ด๋‹น) ๋ฐ 16 GB RAM์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜์ธ ๊ฒฝ์šฐ, 8๊ฐœ CPU ์ฝ”์–ด(16๊ฐœ AWS vCPU) ๋ฐ 64GB RAM์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค! # ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ ๋ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค ํฌ๊ธฐ c5.4xlarge m5.4xlarge > ์ €๋Š” m5.4xlarge๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค๐Ÿค— r5.4xlarge EC2 ์ธ์Šคํ„ด์Šค ์œ ํ˜•์— ๋”ฐ๋ฅธ Tableau ์†๋„ ๋น„๊ต ์ž๋ฃŒ (ํด๋ฆญ!) ๊ทธ๋Ÿฌ๋ฉด ์„ค์น˜ํ•ด๋ด…์‹œ๋‹ค! 1. EC2 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ & ์ ‘์† ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„..

728x90