분류 전체보기
AWS Lambda 직접 구현하기 - 5 (프로세스 종속성, 파일 시스템 공유 문제 해결)
AWS Lambda 직접 구현하기 - 5 (프로세스 종속성, 파일 시스템 공유 문제 해결)
2024.12.251. VM 실행동안 프로세스 활성화 문제2. 파일시스템 공유 문제 두 개의 문제를 해결해야 한다. 1번은 생각보다 쉬운데 바로 수정해 보자. 1. VM 실행동안 프로세스 활성화 문제 수정Firecracker 소켓을 여는 프로세스를 개별 프로세스로 실행하고, 일정 시간이 지나면 해당 프로세스가 종료되게 설정하면 된다. private void firecrackerStart(Map env) throws IOException { ProcessBuilder firecrackerStartBuilder = new ProcessBuilder(FIRECRACKER_PATH + "/firecracker", "--api-sock", env.get("API_SOCKET"));..
AWS Lambda 직접 구현하기 - 4 (Firecracker Java 애플리케이션으로 실행)
AWS Lambda 직접 구현하기 - 4 (Firecracker Java 애플리케이션으로 실행)
2024.12.25쉘 스크립트로 지금까지 모두 구현했지만, 이제는 Java 애플리케이션으로 실행하는 것을 구현하려고 한다. 방법 자체는 어렵지 않다.이전에 작성한 스크립트를 Java 애플리케이션에서 환경 변수를 주입하고, 스크립트를 실행하면 된다. 바로 작성해 보자. Firecrakcer Controllerpackage firecracker_application.firecracker_instance.controller;import firecracker_application.firecracker_instance.controller.dto.StartVMRequest;import firecracker_application.firecracker_instance.controller.dto.ToWarmUpRequest;import ..
AWS Lambda 직접 구현하기 - 3 (Firecracker 실행)
AWS Lambda 직접 구현하기 - 3 (Firecracker 실행)
2024.12.14firecracker로 microVM을 생성해 보고, 비즈니스 로직을 만드려고 했다. 다만 내 노트북은 M2로 중첩 가상화를 지원하지 않아서, KVM을 이용할 수 없었다. 그래서 클라우드 가상 머신을 활용하려고 가능한 인스턴스 타입을 알아봤다. 나는 AWS가 가장 친숙하기에 AWS에서 진행하려 했으나 AWS는 기본적으로는 중첩 가상화를 지원하지 않는다. 따라서 베어메탈 인스턴스 타입을 사용해야 kvm을 사용할 수 있다. 그중에 가장 저렴한 것은 c6g.metal다. 64 vcpu, 128GB 메모리로 과분한 스펙이라서 가격이 시간당 2.464$다. 오류를 잡고 테스트를 진행하는 시간이 오래 걸릴 것으로 생각돼서 너무 큰 금액이다. 그래서 나는 azure를 선택했다. azure는 신규 사용자에게 200..
AWS Lambda 직접 구현하기 - 2 (요청 애플리케이션 생성)
AWS Lambda 직접 구현하기 - 2 (요청 애플리케이션 생성)
2024.11.29이제 구현을 할 차례인데 나는 SpringBoot 백엔드 개발자 경력이 있기에 Web Application으로는 SpringBoot로 구축할 예정이다. 우선 아키텍처는 다음과 같다. 여기서 ALB와 연결된 Wab Application과 FireCracker에서 실행되는 Web Application이 2개가 있다. 이제 A, B로 칭하겠다. 요구사항을 한 번 정리해 보자. A Web Application 요구 사항1. 사용자가 요청을 보냈을 때 DynamoDB를 보고 리소스 여유가 있는 FireCracker EC2로 요청을 보내고 반환2. Warm Up 상태인 경우에 microVM을 다시 생성하지 않고, Warm Up 상태인 곳을 보내기. A Web Application(이하 WA)은 DynamoDB를 ..
AWS Lambda 직접 구현하기 - 1 (시작)
AWS Lambda 직접 구현하기 - 1 (시작)
2024.11.27요즘 AWS 인프라 중에서 많이 다루는 것이 Lambda여서 그런지 Lambda 내부 동작에 대해서 궁금증이 생겼다. Lambda는 어떻게 짧은 시간에 독립된 환경을 구성하고 코드를 실행키는 지 찾아봤다. 그러던 중 2018년 AWS 기술 블로그에서 확인할 수 있었다. AWS에서 오픈소스로 개발한 firecracker라는 가상화 기술이다. firecracker 문서 내용에 따르면, Lambda 혹은 Fargate같은 서버리스 서비스를 위해서 KVM을 기반으로 경량 가상화인 microVM을 만들어 125ms 만에 코드를 실행할 환경을 제공한다고 한다. Virtual Box로 VM을 생성했을 때 15초 ~ 1분 정도 걸렸었는데, 얼마나 놀라운 기술인가..! 그래서 단순히 firecracker를 실행해보는 게..
EC2 UserData 용량 문제 해결
EC2 UserData 용량 문제 해결
2024.11.07UserData(이하 UD) 스크립트는 EC2 인스턴스가 시작될 때 실행된다. UD를 이용해 필요한 패키지를 설치하거나 EC2 내부에서 스크립트를 실행할 수 있다. 실제로 작업할 때 EC2를 만들면 환경 변수랑 실행할 스크립트 때문에 UD의 최대 크기인 16KB를 넘기는 경우가 생겨서 에러가 발생한 적이 있었다. 이러한 문제를 해결 방법에 대해서 알아보려고 한다. 1. Machine Image 만들기EC2에 필요한 패키지를 미리 설치한 Machine Image를 준비하면, 패키지 설치 스크립트를 빼고도 되니까 UD 크기를 줄일 수 있다. 2. 실행할 스크립트 외부에 저장하기AWS S3 같은 외부 저장소에 실행할 스크립트를 저장해 놓고, 인스턴스에서 다운로드해서 실행하는 방법이다. 이렇게 하면 UD 크..