𝗖𝗹𝗼𝘂𝗱 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗮𝗻𝗱 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆: 𝗧𝗵𝗲 𝗡𝗲𝘅𝘁 𝗟𝗲𝘃𝗲𝗹 𝗳𝗼𝗿 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀
웹 애플리케이션이 로컬 머신에서 잘 작동합니다. 이제 작업이 끝났다고 생각할 수도 있습니다. 하지만 그렇지 않습니다.
앱을 어디에 배치할지 결정해야 합니다. 어떻게 보호할지 결정해야 합니다. 수천 명의 사용자가 동시에 접속할 때 어떤 일이 벌어질지도 결정해야 합니다.
클라우드로 이전하는 것은 단순히 코드를 업로드하는 것 이상의 작업이 필요합니다. 아키텍처와 보안을 이해해야 합니다.
PaaS(Platform as a Service)는 개발자에게 훌륭한 시작점입니다. PaaS를 사용하면 클라우드 제공업체가 서버, 운영 체제 및 네트워킹을 관리합니다. 여러분은 코드와 사용자 경험에만 집중하면 됩니다.
주요 PaaS 옵션은 다음과 같습니다:
• AWS App Runner: 컨테이너화된 웹 앱에 적합합니다. 배포와 스케일링을 처리합니다. • Azure App Service: GitHub Actions 또는 Azure DevOps와 같은 Microsoft 도구를 사용하는 경우에 완벽합니다. • Google Cloud Run: 서버리스 컨테이너에 탁월합니다. 사용자가 없을 때는 비용 절감을 위해 스케일을 0으로 줄일 수 있습니다.
클라우드 보안은 여러분의 책임입니다. 제공업체가 도구를 제공하지만, 이를 올바르게 사용하는 것은 여러분의 몫입니다.
다음 보안 규칙을 따르세요:
- 최소 권한 원칙(principle of least privilege)을 사용하세요. 사용자 및 서비스에 필요한 권한만 부여하세요. AWS에서는 IAM, Azure에서는 Microsoft Entra ID, Google Cloud에서는 Cloud IAM을 사용하세요.
- 비밀번호를 절대 하드코딩하지 마세요. 코드에
const password = "123"을 사용하는 것은 위험합니다. - 대신 환경 변수를 사용하세요. 코드에서
process.env.DB_PASSWORD를 사용하세요. - 항상
.env파일을.gitignore에 추가하세요. - 실제 비밀 정보(secrets)는 저장소가 아닌 클라우드 제공업체의 대시보드에 설정하세요.
데이터 주권(data sovereignty)을 고려하세요. 데이터가 어디에 저장되는지, 어떤 법률이 적용되는지 알아야 합니다. 유럽 사용자가 있다면 GDPR 규정을 준수해야 합니다.
트래픽 급증에 대비하세요. 인플루언서가 여러분의 링크를 공유하면 서버가 다운될 수 있습니다. 스케일링을 통해 이를 방지할 수 있습니다:
• 수직적 스케일링(Vertical Scaling): CPU나 RAM을 늘려 머신의 성능을 높입니다. • 수평적 스케일링(Horizontal Scaling): 앱의 인스턴스를 더 많이 생성하고 로드 밸런서를 사용하여 트래픽을 분산합니다.
항상 사이트에서 HTTPS를 사용하도록 하세요. 이를 통해 통신이 암호화되고 안전하게 유지됩니다.
연습 방법:
- 간단한 웹 앱을 위한 저장소(repository)를 만듭니다.
- 코드에 민감한 데이터가 포함되지 않도록 합니다.
- Vercel 또는 Netlify를 사용하여 배포합니다.
- 사이트에서 HTTPS를 사용하는지 확인합니다.
Source: https://dev.to/xinlin25/arquitectura-y-seguridad-en-la-nube-el-proximo-nivel-del-desarrollador-1bnd