[TIL/AWS] 2024/10/21
서버리스 컴퓨팅은 개발자가 서버 관리나 인프라에 대한 걱정 없이 애플리케이션의 코드를 작성하고 실행할 수 있도록 해주는 클라우드 컴퓨팅 모델을 의미하는 용어다. Serverless는 실제로 서버가 없는 것이 아니라, 개발자가 직접 서버를 관리할 필요가 없음을 의미한다.
1. 서버리스 컴퓨팅이란? ✍️
서버리스 컴퓨팅은 개발자가 서버 관리나 인프라에 대한 걱정 없이 애플리케이션의 코드를 작성하고 실행할 수 있도록 해주는 클라우드 컴퓨팅 모델을 의미하는 용어다. Serverless는 실제로 서버가 없는 것이 아니라, 개발자가 직접 서버를 관리할 필요가 없음을 의미한다.
캘리포니아 대학교 버클리의 한 연구진이 작성한 2019년 논문 'Cloud Programming Simplified: A Berkeley View on Serverless Computing'에서는 서버리스의 정의를 다음과 같이 확장한 바 있다.
서비스형 함수(FaaS)로 대변되는 클라우드 기능들은 서버리스 컴퓨팅의 핵심이지만 클라우드 플랫폼은 서비스형 백엔드(BaaS)와 같은 특정 애플리케이션 요구 사항을 충족하는 전문 서버리스 프레임워크도 제공한다. 간단히 말해서 '서버리스 컴퓨팅 = FaaS + BaaS'다.
1.1 FaaS(Function as a Service) 🚀
FaaS는 이벤트를 기반으로 작동하는 서버리스 컴퓨팅의 한 형태라고 볼 수 있다. 사용자가 특정 이벤트(HTTP 요청, 파일 업로드 등)에 반응하여 함수를 실행할 수 있도록 한다. FaaS는 다음과 같은 특징을 갖는다.
1.2 BaaS(Backend as a Service) 🚀
BaaS는 서버 측의 여러 기능을 클라우드 서비스로 제공하는 모델이다. 데이터베이스, 사용자 인증, 푸시 알림 등 다양한 백엔드 서비스를 API 형태로 제공하여, 개발자는 이러한 서비스를 쉽게 통합할 수 있다. BaaS의 주요 특징은 다음과 같다.
2. AWS Amplify란? ✍️
AWS Amplify는 서버리스 애플리케이션 개발을 지원하는 통합 개발 플랫폼으로, 웹 및 모바일 애플리케이션의 백엔드와 프론트엔드를 쉽게 구축할 수 있도록 도와준다. AWS Amplify 프레임워크는 'CLI, 클라이언트 라이브러리, 툴체인, 웹 호스팅 플랫폼' 네 가지 주요 구성 요소로 이루어져 있다.
2.1 Amplify CLI 🚀
Amplify CLI는 개발자가 AWS 서비스에 쉽게 접근하고 구성할 수 있도록 도와주는 명령줄 도구다. 이를 통해 사용자는 다음과 같은 작업을 수행할 수 있다.
요컨대, CLI를 통해 AWS의 복잡한 설정을 간단한 명령어로 수행할 수 있어 개발 효율성을 높일 수 있다.
### 2.2 Amplify 클라이언트 라이브러리 🚀
Amplify 클라이언트 라이브러리는 React, Angular, Vue.js, iOS, Android와 같은 다양한 프론트엔드 프레임워크에서 AWS 서비스를 쉽게 사용할 수 있도록 해주는 JavaScript 라이브러리다. 이 라이브러리를 사용하면 다음과 같은 기능을 구현할 수 있다.
2.3 Amplify 툴체인 🚀
툴체인은 코드 생성과 서버리스 함수 보일러플레이트 같은 것을 통해 신속한 개발이 가능하도록 한다. 가령, 사용자 인증, 파일 업로드, 데이터 표시 등을 위한 미리 디자인된 UI 컴포넌트를 사용할 수 있다.
2.4 Amplify 웹 호스팅 플랫폼 🚀
호스팅 플랫폼을 통해 Atomic Deployment, CI/CD, 사용자 지정 도메인 등이 포함된 라이브 도메인에 배포할 수 있다.
3. Amplify CLI 적용 ✍️
3.1 Amplify CLI 설치와 설정 🚀
1. CLI를 다음 명령어를 통해 global하게 설치한다. 🌿
2. 사용자 자격 증명(access key, secret access key)를 통해 CLI를 설정하기 위해 configure 명령어를 실행한다. 🌿명령어를 실행하면 다음 단계를 진행한다. 2-1. Specify the AWS region -> ap-northeast-2(아시아 태평양, 서울) 2-2. Specify username -> (본인이 기억할 수 있는 값으로 지정)
3. access key, secret access key를 CLI에 입력하면 성공적으로 설정이 완료되고 서비스 생성이 가능해진다. 🌿
+) 중간 과정에서 CLI가 브라우저를 통해 Dashboard와 Docs를 자동으로 열어준다. 해당 자료를 보고 진행하면 전혀 어려움이 없다.
+) 본인의 경우 이미 회원 가입이 되어 있었기에, sign in using root user email 버튼을 클릭해서 전 과정을 진행했고, 다중 인증 설정(MFA)은 우선 Skip 했다.
3.2 첫 번째 Amplify 프로젝트 🚀
1. 자신에게 해당하는 경로에서 새로운 리액트 프로젝트를 생성한다. 이후 생성된 리액트 프로젝트 디렉터리로 이동한다. 🌿
npx create-react-app amplify-app
cd amplify-app2. 클라이언트에서 사용한 Amplify를 설치한다. 🌿
3. Amplify 프로젝트를 생성하기 위해 init 명령어를 실행한다. 🌿4. 제시되는 CLI 단계를 마치면 src 디렉터리에는 aws-exports 파일이, root 디렉터리에는 amplify 디렉터리가 생성된다. 🌿 4-1. ``aws-exports``: 사용자의 자격 증명을 가지고 CLI에서 생성한 리소스 카테고리의 key-value의 쌍이다. 4-2. ``amplify directory``: Amplify 프로젝트의 모든 코드와 설정 파일이 있고, 하위 디렉터리로 backend 디렉터리와 #current-cloud-backend 디렉터리가 있다.
3.3 첫 번째 서비스 생성과 배포 🚀
1. Amplify의 add 명령어를 통해 새 서비스를 추가한다. 🌿
2. Do you want to configure advanced settings? 🌿3. push 명령어를 통해 인증 서비스를 배포한다. 🌿
4. 프론트엔드에서 테스트 진행 🌿
다음 코드를 index.js에 추가한다.import { Amplify } from "aws-amplify"; import config from "./aws-exports"; Amplify.configure(config);
다음 코드를 src/App.js에 추가한다. 버전 이슈로 Amplify Dev Center의 UI Library 파트를 참고했다.import { Amplify } from "aws-amplify"; import { withAuthenticator } from "@aws-amplify/ui-react"; import "@aws-amplify/ui-react/styles.css"; import awsExports from "./aws-exports";
Amplify.configure(awsExports);
function App({ signOut, user }) { return ( <>
Hello {user.username}
> ); }export default withAuthenticator(App);
5. npm start 🌿


### 3.4 리소스 삭제 🚀
1. 개별 기능 제거(remove) 🌿2. 전체 Amplify 프로젝트 제거(delete) 🌿
More to read
AI&ML 기초
Reference: https://bettermesol.github.io/ml/2019/09/16/ai-ml-dl/AI: 기계가 사람처럼 생각하고 판단하게 만드는 가장 넓은 범주의 기술입니다.ML: 데이터를 학습하여 스스로 규칙을 찾아내는 AI의 한 분야로,
'AI Agent Economy'Novitas : AI Agent가 지갑을 가지는 세상
얼마 전, 미래에셋증권 리서치 리포트(올해는 이더리움이다: 에이전트 시대의 Near Automata)를 접하게 되었습니다. AI Agent를 인간과 함께할 경제 주체로 바라보는 시각에 적잖이 충격을 받았더랬죠.한 가지 짚고 넘어갈 부분이 있습니다. 우리가 흔히 'AI'
'ERC-8004'Novitas: AI 에이전트 경제 주체
Web 4.0을 한 문장으로 정의하면 Sovereign Transact입니다.AI가 인간의 허락 없이 지갑을 소유하고, 결제를 수행하며, 인프라를 통제하는 주권적 경제 주체가 되는 세계입니다. Web 3.0이 블록체인 기반의 탈중앙화를 실현했다면, Web 4.0은 그