이전 part1에서는 프로젝트 개요 및 데이터 수집을 진행했다. 이번 파트에서는 Lambda 함수와 Glue를 사용하여 데이터 처리를 구현하는 것에 초점을 맞춘다. Architecture 이번 파트의 핵심Lambda 함수 개발 및 데이터 병합AWS Glue ETL을 통한 데이터 통합 및 전처리 3. Lambda 함수 개발 및 데이터 병합함수 생성새로작성함수 이름 지정런타임 : Python 3.9트리거 추가S3 버킷에 새 이미지 업로드 시 Lambda 함수 자동 호출Lambda 코드 작성import boto3import csvimport jsonimport urllib.parseimport osfrom datetime import datetime, timedeltafrom io import BytesIO..
2024년 한 해의 성장을 되돌아보고, 앞으로의 방향을 설정하기 위한 회고를 작성하고자 한다.2023년 회고에서 설정했던 목표들을 기준으로 성과를 분석하고, 2025년의 새로운 도전과제를 정의해보려 한다.2024년 목표 달성 분석[커리어] 개발을 시작하기에 앞서 큰 그림 그려보기(개발 설계) 올해는 회사에서 개발 설계가 있으면 무조건 손들고 해보겠다고 했다. 여전히 설계는 어렵지만 시스템의 전체적인 구조를 그리고 설계하는 과정에서 많은 성장이 있었다. 특히 복잡한 시스템을 모듈별로 분리하고, 컴포넌트 간의 의존성을 고려하는 능력이 향상되었다. 또한 팀원들과 시스템에 대한 공통된 이해를 형성하고, 기술적 의사결정의 근거를 명확히 하는 데 도움이 되었다. 하지만 경기 침체로 인해 설계 단계에서 중단되는 프로..
이전 Part 1에서는 실시간 비디오 스트리밍을 위한 기본 인프라를 구축했다. 이번 파트에서는 Amazon Rekognition을 활용한 실시간 얼굴 인식과 IoT 디바이스 제어 구현에 초점을 맞춘다. Architecture 이번 파트의 핵심Rekognition을 통한 얼굴 인식 기능 구현Lambda를 통한 인식 결과 처리SNS와 IoT Core를 활용한 알림 및 디바이스 제어 이전 Part 1에서 구축한 스트리밍 기반 위에, 위 아키텍처의 빨간 박스 부분을 구현해보자. Kinesis Video Stream으로 받는 영상으로 Rekognition Collection에 등록된 얼굴인지 Rekognition이 판단 후 Kinesis Data Stream에 전송1. Faces Collection(Rekogni..
이번 글에서는 Raspberry Pi 5와 AWS 서비스들을 연동하여 실시간 얼굴 인식 시스템을 구축하는 방법을 단계별로 살펴본다. 이 시스템은 보안 모니터링, 출입 관리, 혹은 방문자 확인 등 다양한 실제 현장에서 활용될 수 있다. Architecture 이 시스템의 데이터 흐름은 다음과 같다.영상 수집 및 전송Raspberry Pi 카메라에서 캡처된 영상을 Kinesis Video Streams로 실시간 전송얼굴 인식 처리Kinesis Video Streams의 영상을 Rekognition이 실시간 분석사전 등록된 얼굴 정보와 비교하여 신원 확인분석 결과를 Kinesis Data Streams로 전송이벤트 처리Lambda 함수가 Kinesis Data Streams의 분석 결과 처리특정 인물 감지 시..
회사에서 AWS를 활용하여 엣지 디바이스에서 AI 모델을 구동하는 프로젝트를 준비하고 있다는 소식을 들었다. 이에 앞서 개인적으로 학습 겸 테스트를 진행해보고 그 과정을 기록하고자 한다. 이 글에서는 AWS의 대표적인 엣지 컴퓨팅 서비스인 AWS IoT Greengrass V2를 활용하여 Raspberry Pi 5에서 ML 모델을 구동하는 전체 과정을 다룬다. SageMaker에서 모델을 학습하고 최적화하는 과정부터, Greengrass를 통해 라즈베리파이에 모델을 배포하고 추론하는 과정까지 실습 위주로 설명하겠다. Architecture모델 훈련SageMaker에서 MXNet을 이용한 classification 모델 훈련을 진행한다.https://sagemaker-examples-test-website..
최근에 'styleu'라는 프로젝트를 시작하기 전에, Node.js에 대해 깊이 있게 학습할 기회를 가졌다. 이 과정에서 Node.js의 중요한 구성 요소 중 하나인 이벤트 루프(Event Loop)에 대한 이해를 심화시켰고, 특히 이벤트 루프를 차단하는 행위를 왜 하지 말아야 하는지에 대한 분석에 주력했다. 이에 대한 통찰을 공유하기 위해, 해당 내용을 담은 블로그를 작성하게 되었다.요약'이벤트 루프(Event Loop)'와 '워커 풀(Worker Pool)'은 주로 노드JS(Node.js)와 같은 비동기 프로그래밍 환경에서 중요한 역할을 한다.자바스크립트는 Event Loop가 있는 단일 스레드 환경에서 실행된다. 이벤트 루프는 들어오는 작업을 순차적으로 처리하는 연속 루프로, 더 많은 작업을 수행하..
최근 회사에서 AWS로 서비스 구축을 진행하면서 안전한 인증과 권한 관리 체계를 갖추는 것이 매우 중요하다는 것을 깨달았다. 이러한 측면에서 AWS Cognito 서비스가 해결책이 될 수 있음을 알게 되었다. Amazon Cognito는 웹 및 모바일 애플리케이션을 위한 사용자 인증 및 권한을 부여하는 서비스로, AWS 리소스에 대한 액세스를 쉽고 안전하게 제어할 수 있다. 따라서 본 글에서는 Amazon Cognito의 자격증명 풀(Identity Pool) 기능을 활용하여 S3 버킷의 파일 목록에 접근하는 방법을 실습해보고자 한다. Amazon Cognito란? 웹 및 모바일 앱을 위한 자격 증명 플랫폼이다. Cognito에는 사용자 풀 (User Pool) 과 자격 증명 풀 (Identity Poo..
회사 업무를 하다가 S3의 csv 데이터를 Aurora MySQL로 로드할 일이 생겼다. 이 과정이 생각보다 복잡해서 해당 내용을 글로써 정리해보려고 한다. 인프라 세팅 S3 데이터를 RDS로 받기 위해서는 제일 먼저 VPC 등 클라우드 인프라 환경을 세팅해줘야 한다. 1. VPC 생성 1-2. vpc cidr 편집 2. 서브넷 생성(최소2개) 2-1. 첫 번째 서브넷 2-2. 두 번째 서브넷 3. 보안그룹 생성 후 VPC 연결 4. S3버킷 만들고 가지고 있는 csv 파일 업로드하기 4-1. S3 버킷 생성하기 4-2. CSV 파일 업로드 업로드 버튼 클릭 후, CSV 파일 선택, 저장 5. S3에 대한 액세스 권한 부여 Aurora MySQL이 S3와 데이터를 주고받으려면 S3 버킷에서 데이터를 로드..
회사에서 django를 사용하여 챗봇을 만들었다. 오늘은 왜 django를 사용해서 챗봇을 만들었는지부터 django를 AWS EC2에 배포하는 방법, EC2에서 OS(AMI) 선택하는 방법에 대해 알아보고자 한다. 왜 Django를 사용하여 챗봇을 개발하였는가? 챗봇을 개발할 수 있는 프레임워크는 django, flask, fast api 등이 있다. 현재 개발할 수 있는 인력이 2명이다. 개발할 수 있는 인력이 모두 경험해 본 프레임워크가 django이다. 따라서, 러닝커브가 가장 짧을 것이라 생각했다. 해당 챗봇을 회사 내부분들이 사용해 볼 수 있도록 AWS EC2에 배포 하기로 결정이 됐다. 챗봇 코드는 github에 업로드 되어 있어 git repository를 이용해 EC2에 옮기기로 하였다...