✨들어가며 AWS를 사용하다 보면 특정 로그, 백업 파일, 임시 업로드 파일 등 단기적으로만 필요하고, 일정 기간이 지나면 자동으로 정리하고 싶은 데이터들이 생길 수 밖에 없음 하지만 이를 수동으로 삭제하는 작업은 번거롭고 실수의 여지가 많은데 이를 자동화할 수 있는 좋은 기능이 S3 수명 주기(Lifecycle) 규칙임 현재 진행 중인 프로젝트에서 하루에 1번씩 AWS S3에 모델 테스트용 데이터 셋, 아이템 벡터 값을 적재하게 되는데아이템 벡터 값은 생성한 당일에만 사용이 되고 모델 테스트용 데이터 셋은 생성 후 7일 동안만 사용됨 이럴 경우 벡터 값을 예시로 살펴보면 100일이 지나면 사용되지 않는 객체가 99개가됨 => S3 수명 주기 규칙을 사용하면 아주 좋다👍 ✨S3란? Amazon S3(S..
AWS
시작하기 전에 https://hanjungyo.tistory.com/163 벡터 연산 정도의 매우 간단한 룰 기반 로직이라 별도로 모델 파일을 저장하거" data-og-host="hanjungyo.tistory.com" data-og-source-url="https://hanjungyo.tistory.com/163" data-og-url="https://hanjungyo.tistory.com/163" data-og-image="https://blog.kakaocdn.net/dna/JQfvC/hyZm7lbMC5/AAAAAAAAAAAAAAAAAAAAAGUn0iGdjs25HZQF7N96pqIGIFP7Na5WWTtuUh9J5Y2h/img.jpg?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1780239599&allow_ip=&allow_referer=&signature=9PXwl1uH2aS%2B41eaylgN%2BRMI4z4%3D
현재 상황 현재 진행 중인 프로젝트에서 하루에 1번 모델을 돌려 DynamoDB에 결과를 저장하는 작업을 수행해야 함 => 벡터 연산 정도의 매우 간단한 룰 기반 로직이라 별도로 모델 파일을 저장하거나 복잡한 인프라를 구성할 필요가 없기에 AWS Lambda를 활용하여 이 로직을 서버리스로 실행하기로 결정(완전한 서버리스 구조로 인프라 관리 부담이 없고 하루 한 번 실행이므로 Lambda의 프리티어 사용량 내에서 비용 효율적인 운영이 가능)이를 위해 AWS EventBridge를 활용하여 매일 정해진 시각(Cron 표현식 기반)에 Lambda 함수를 자동으로 트리거하도록 구성하는 태스크를 진행하였음 cron 식이란? cron 식은 정해진 시간에 작업을 자동 실행할 수 있게 해주는 표현식임AWS에서 쓰는 ..
0. AWS ECR이란? Amazon ECR (Elastic Container Registry)는 AWS에서 제공하는 완전 관리형 Docker 컨테이너 이미지 저장소임 AWS 인프라와 긴밀하게 통합되어 있기에 ECS, EKS와의 통합 : ECR에 저장된 이미지는 ECS나 EKS에서 바로 가져다 쓸 수 있어 CI/CD 파이프라인과의 연동이 수월함=> EC2 인스턴스가 ECR에 접속해서 이미지를 push/pull 할 수도 있음IAM 기반 권한 제어 : 태그를 이용해 이미지 버전 관리를 할 수 있음보안 검사 기능 : 이미지에 보안 취약점이 있는지 자동으로 분석해주는 기능도 제공비용 효율성 : 저장 용량과 데이터 전송량에 따라 과금되며, 기본적으로는 사용한 만큼만 비용을 지불하면됨 다음과 같은 장점이 있음 =>..
AWS MFA에서 사용중인 패스키(디바이스)를 변경할 일이 생겨서 AWS MFA 변경 및 추가하는 방법을 공유합니다! 0. AWS MFA란? MFA (Multi-Factor Authentication)는 다단계 인증 방식으로, 사용자가 AWS에 로그인할 때 비밀번호 외에 추가적인 인증 수단을 요구하는 보안 기능임 위와 같이 2025년 6월 1일 기준 AWS에서는 총 3가지의 MFA 옵션이 존재함 AWS에서는 MFA는 보안권장사항인데 1. 계정 탈취 리스크 감소만약 누군가 비밀번호를 탈취하더라도, MFA 코드 없이는 접근 불가능하기에 계정을 탈튀당할 리스크가 줄어들고특히, 루트 계정은 모든 AWS 리소스에 대한 무제한 권한이 있어 보안 위협이 매우 크기에 필수적임2. AWS 보안 권장 사항에 포함됨..
프로젝트에서 AWS IAM을 사용해야 하는 이유 이번에 프로젝트를 진행하면서 AWS로 인프라를 구축하게 되었음 다른 글에서도 다뤘지만 AWS 루트 계정을 이용하는 것은 그렇게 좋은 방법이 아님(특히나 AWS 관련 작업을 하는 사람이 여러명인 경우) 보안 문제루트 계정은 모든 권한을 가지고 있어서 리스크가 너무 큼=> 이 부분에 대해서는 루트 계정은 MFA를 설정하고 초기 IAM 계정을 만든 후 사용하지 않는 것이 AWS Best Pracitce라고 함팀원들 각자 개별 계정을 가질 수 있음 (+ 유연한 권한 관리)IAM으로 각 팀원에게 개별 AWS 계정을 부여할 수 있고 IAM User, IAM Role을 사용하여 필요한 권한만 부여할 수 있음=> 조금 더 정확히는 하나의 AWS 계정이고 계정 내에서 개별..
개인적으로 찾아보며 정리한 내용이고 주관적인 생각이 들어있어오류 사항이나 더 좋은 피드백은 언제나 환영합니다..! 진행 중인 프로젝트에서 백엔드 서버는 아직 배포되지 않은 상태이고 백엔드팀 (2명) 모두 AWS로 인프라 구축을 진행해왔기에 AWS에 굉장히 익숙한 상황이라 자연스럽게 AWS로 전체 인프라를 구축하기로 예정되어 있는 상황이다현재는 사용자의 요청(사용자의 보이스)이 들어오면 인공지능 모델을 통해 보이스팩을 만들어 S3(스토리지)에 저장해주는 로직을 구현중에 있다그러던중 새로운 방식의 도입에 대해 고민해보게되는데... GCP Cloud Run 을 사용하자 GCP Cloud Run을 생각하게된 결론부터 말하자면 GPU 서버리스를 지원하기 때문이다. 서버리스를 사용하자 인프라 관리 부담 최소화 ..
국민대학교에서 "클라우드 컴퓨팅" 교과목을 진행하시는이경용 교수님의 강의 교안을 이용하여 수업 내용을 정리하였습니다 구동중인 서버에 문제 발생 시 해결 방안 => 가능한 모든 곳에서 자원의 시작, 종료, 설정을 자동화를 하는 것을 권장 수동으로 관리되는 자원들을 줄임으로 시스템의 안정성, 일관성, 효율성을 높이도록 해야함 DevOps Development : 서비스 개발 Operations : 서비스 운용 클라우드 서비스의 등장 및 웹 서비스 보편화에 따른 Development와 Operations의 경계 모호 웹 서비스의 빠른 개선 주기로 인한 간단한 릴리즈 사이클 필요=> 코드를 활용한 서비스 배포 보편화 (IaC) Infrastructure-as-Code (코드를 이용한 자원 관리) 서비..
국민대학교에서 "클라우드 컴퓨팅" 교과목을 진행하시는이경용 교수님의 강의 교안을 이용하여 수업 내용을 정리하였습니다 AWS High Availability (고가용성) Fault-tolerance와 Scalability 관점에서 살펴보자 고가용성 (High Availability)란? 서비스를 운용하는 사람이 관리를 하지 않아도 서비스가 동작하지 않는 시간을 최소화해서 사용자에게 예측된 성능을 제공해줄 수 있는 척도 고가용성의 구현 요소들 Fault tolerance 응용예제 자체에서 문제가 발생시에도 사용자에게 영향을 전파하지 않는 능력=> fault가 failure가 되지 않게백업 서버의 구동 등 Scalability 시스템의 디자인을 바꾸지 않고도 증가하는 요청을 처리할 수 있는 능력 사용자 ..
국민대학교에서 "클라우드 컴퓨팅" 교과목을 진행하시는이경용 교수님의 강의 교안을 이용하여 수업 내용을 정리하였습니다 Cloud Infrastructure 하나의 데이터센터에는 일반적으로 수천대의 서버가 장착되어 있음 데이터 센터 내에 서버는 랙으로 구성됨 => 같은 랙에서는 싱글 네트워크 스위치를 통해서 연결 => 여러 랙은 고성능 네트워크 스위치로 연결 AWS Infrastructure - Region & Availability Zone (AZ) Region 물리적 지리적 위치를 기준으로 구성된 자원 세트(미국 서부, 미국 동부, 아시아 서울, 아시아 일본 지역 등..) 하나의 Region은 최소 2개 이상의 Availability Zone으로 구성됨 Availability Zone 하나 또는 ..
프로젝트를 배포하던 중 AWS EC2에서 메모리 부족 현상으로 ssh 접속이 안되는 상황이 발생했다...(프리티어 사용중) 프리티어로 사용하게 되는 t2.micro 인스턴스 유형은 램이 1GB이기 때문에 메모리 부족현상이 일어날 수 있다! => swap file을 이용하여 swap memory 할당을 해보자!(현재 생성한 EC2는 ubuntu 환경임) EC2 램이 가득 찼기 때문에 실제 디스크의 용량을 이용하여 부족한 메모리를 대체할 공간을 swap memory 라고 함! => 보통 swap memory는 할당된 메모리의 2배를 추천하고 있다고 함! 스왑 메모리는 RAM을 대신하는 것이 아니라, RAM이 부족할 때 임시로 사용하는 비상 메커니즘으로 생각하는게 좋음=> 디스크에 저장된 스왑 메모리는 R..
EC2 인스턴스 생성 방법은 이전 포스팅을 참고해주세요!로컬에서 Docker 설정 Jar 파일 빌드하기 보통 빌드를 할 때 ./graldew clean build 를 많이 봤을텐데 이번에는 ./gradlew clean bootJar를 통해 Spring Boot 애플리케이션을 위한 실행 가능한 JAR파일만 생성했음 ./gradlew build는 bootJar를 포함하여 내부 동작이 더 길다반면, bootJar의 경우 단순히 프로젝트의 jar파일을 만드는 목적으로 빌드 속도가 빠르다(clean 작업은 build/ 와 같은 빌드 산출물 디렉토리를 삭제하여 이전 빌드 결과물을 모두 제거함) Dockerfile 생성하기# Dockerfile# jdk17 Image StartFROM openjdk:17# jar..