FocusAI 구축하기: AWS Serverless와 Amazon Bedrock을 활용한 일일 작업 계획의 단순화
요약
AWS Serverless와 Amazon Bedrock을 활용하여 사용자의 작업 목록을 분석하고 우선순위를 정해주는 AI 생산성 어시스턴트 'FocusAI' 구축 사례를 소개합니다. 복잡한 프로젝트 관리 도구 대신 생성형 AI를 통해 실행 가능한 계획을 즉시 생성하는 데 집중합니다.
핵심 포인트
- AWS Serverless 및 Amazon Bedrock 기반의 아키텍처 활용
- 단순 작업 목록을 구조화된 실행 계획으로 변환
- 우선순위, 예상 소요 시간, 권장 첫 단계 및 근거 제공
- 사용자의 정신적 과부하를 줄이는 가벼운 UX 설계
매일 아침은 항상 같은 방식으로 시작됩니다. 자리에 앉아 완수해야 할 모든 일의 목록을 작성한 다음, 어디서부터 시작할지 결정하는 데 몇 분을 소비합니다.
문제는 목록을 만드는 것이 아닙니다. 진짜 문제는 우선순위를 정하는 것입니다.
어떤 작업은 긴급합니다. 다른 작업은 중요하지만 시간에 민감하지는 않습니다. 어떤 작업은 하루 중 나중에 해도 됩니다. 무엇이 즉각적인 주의를 기울여야 하는지 결정하는 것 자체가 하나의 작업이 되어, 실제 업무가 시작되기도 전에 불필요한 마찰을 일으키곤 합니다.
이러한 일상의 문제가 저로 하여금 FocusAI를 만들게 했습니다. FocusAI는 단순한 작업 목록을 구조화된 실행 계획으로 변환하도록 돕는 AI 기반 생산성 어시스턴트입니다.
프로젝트 관리 플랫폼을 대체하거나 또 다른 복잡한 생산성 시스템을 추가하는 대신, FocusAI는 단 하나의 구체적인 문제 해결에 집중합니다:
오늘 무엇을 가장 먼저 해야 할까?
목표는 명확했습니다. 사용자가 계획을 세우는 데 드는 정신적 과부하(mental overhead)를 제거하여, 사용자가 의미 있는 업무를 수행하는 데 더 많은 시간을 보낼 수 있도록 하는 실용적인 애플리케이션을 구축하는 것이었습니다.
FocusAI의 이면에 담긴 아이디어
오늘날 사용할 수 있는 생산성 애플리케이션은 부족하지 않습니다. 대부분의 앱은 프로젝트 관리, 칸반 보드 (kanban boards), 반복 작업, 협업 도구, 알림, 캘린더 및 상세 보고서와 같은 기능들로 가득 차 있습니다.
이러한 도구들은 매우 강력하지만, 단순히 오늘의 업무량을 정리하고 싶은 사람에게는 추가적인 복잡성을 유발할 수도 있습니다.
FocusAI는 다른 접근 방식을 취합니다.
사용자에게 프로젝트를 생성하거나, 우선순위를 할당하거나, 보드를 구성하거나, 워크플로우를 유지하도록 요구하는 대신, 오직 한 가지만 요구합니다:
당신의 작업 목록.
작업이 제출되면, FocusAI는 생성형 AI (generative AI)를 사용하여 이를 분석하고 몇 초 내에 정리된 실행 계획을 생성합니다.
이 경험은 의도적으로 가볍게 설계되어, 사용자가 계획보다는 실행에 집중할 수 있도록 합니다.
FocusAI의 기능
워크플로우는 가능한 한 단순하게 설계되었습니다.
- 일일 작업 목록을 입력하거나 붙여넣습니다.
- **Prioritize My Day (내 하루의 우선순위 정하기)**를 클릭합니다.
- AI가 생성한 계획을 거의 즉시 받습니다.
모든 작업에 대해 FocusAI는 다음을 생성합니다:
- 우선순위 수준 (Priority level)
- 예상 완료 시간 (Estimated completion time)
- 권장되는 첫 단계 (Recommended first step)
- 권장 사항의 근거 (Reasoning behind the recommendation)
작업 수준의 통찰력 외에도 애플리케이션은 다음을 제공합니다:
- 하루 업무량 요약 (A summary of the day's workload)
- 제출된 작업에 기반한 생산성 팁 (A productivity tip based on the submitted tasks)
인터페이스는 의도적으로 불필요한 기능과 주의 분산 요소를 배제했습니다. 모든 디자인 결정은 사용자가 가능한 한 빨리 업무를 시작할 수 있도록 돕는다는 하나의 목표를 염두에 두고 이루어졌습니다.
아키텍처 (Architecture)
처음부터 저는 애플리케이션이 완전히 서버리스 (Serverless) 방식이기를 원했습니다.
서버리스 (Serverless) 아키텍처는 인프라를 관리할 필요를 없애는 동시에 확장성 (Scalability), 신뢰성 (Reliability), 그리고 간소화된 배포 프로세스를 제공합니다.
전체 아키텍처는 다음과 같습니다:
React + Vite
│
▼
...
기술 스택 (Technology Stack)
프론트엔드는 React와 Vite를 사용하여 구축되었으며, 빠른 개발 경험과 반응형 사용자 인터페이스 (User interface)를 제공합니다.
애플리케이션은 AWS Amplify에 호스팅되며, GitHub에 변경 사항이 푸시될 때마다 새로운 버전을 자동으로 빌드하고 배포합니다.
백엔드는 Amazon API Gateway를 통해 노출되는 AWS Lambda 함수로 구성됩니다.
사용자가 작업을 제출하면, Lambda 함수는 구조화된 프롬프트 (Prompt)를 구성하여 Amazon Bedrock으로 전송하며, 여기서 Amazon Nova Lite가 작업 목록을 분석하고 권장 사항을 생성합니다.
그 후 응답은 프론트엔드 (Frontend)로 반환되어 깔끔하고 구조화된 생산성 계획으로 제시됩니다.
사용된 AWS 서비스
FocusAI는 다음과 같은 AWS 서비스들을 사용하여 구축되었습니다:
- AWS Amplify
- Amazon API Gateway
- AWS Lambda
- Amazon Bedrock
- Amazon Nova Lite
- Amazon CloudWatch
- AWS Identity and Access Management (IAM)
소스 제어 및 지속적 배포 (Continuous Deployment)를 위해 GitHub이 사용되었습니다.
신뢰성을 위한 설계
개발 초기 단계에서 제가 다루고자 했던 측면 중 하나는 신뢰성 (Reliability)이었습니다.
AI 기반 애플리케이션은 할당량 제한 (Quota limits), 서비스 중단 또는 네트워크 문제로 인해 AI 서비스를 일시적으로 사용할 수 없는 경우에도 계속해서 가치를 제공할 수 있어야 합니다.
이러한 시나리오를 처리하기 위해, 저는 폴백 플래너 (Fallback planner)를 구현했습니다.
Amazon Bedrock이 요청을 처리할 수 없을 때마다, 애플리케이션은 에러를 반환하는 대신 미리 정의된 우선순위 로직 (Prioritization logic)을 사용하여 구조화된 생산성 계획을 자동으로 생성합니다.
폴백 (Fallback) 방식이 AI가 생성한 응답만큼 정교하지는 않지만, 이를 통해 모든 상황에서 애플리케이션이 기능적으로 유지되고 유용하게 작동하도록 보장합니다.
이 작은 추가 사항은 사용자 경험 (User experience)과 애플리케이션의 회복 탄력성 (Resilience)을 모두 크게 향상시켰습니다.
진행 과정에서의 도전 과제들
대부분의 클라우드 네이티브 (Cloud-native) 애플리케이션과 마찬가지로, 작업의 대부분은 인터페이스 자체를 구축하기보다는 서비스들을 서로 연결하는 과정이었습니다.
가장 컸던 도전 과제 중 일부는 다음과 같습니다:
- Amazon API Gateway를 올바르게 구성하기
- 프론트엔드와 백엔드 간의 CORS 문제 해결하기
- Amazon Bedrock을 위한 IAM 권한 설정하기
- Lambda 함수 실행 디버깅 (Debugging)
- Bedrock을 통해 Amazon Nova Lite를 성공적으로 호출하기
- Amazon CloudWatch Logs를 사용하여 요청 모니터링하기
- AWS Amplify를 통한 배포 관리하기
이러한 과제들을 해결하는 과정은 문서만으로는 얻기 어려운 AWS 서비스에 대한 귀중한 실무 경험을 제공해 주었습니다.
핵심 요약 (Key Takeaways)
FocusAI를 구축하면서 현대적인 서버리스 (Serverless) 애플리케이션 개발에 대한 이해를 강화할 수 있었습니다.
가장 가치 있었던 교훈 중 일부는 다음과 같습니다:
- AWS Lambda를 사용한 확장 가능한 애플리케이션 구축
- AWS Amplify를 사용한 프론트엔드 (Frontend) 애플리케이션 배포
- Amazon API Gateway를 사용한 REST API 생성
- Amazon Bedrock을 통한 파운데이션 모델 (Foundation Models) 통합
- IAM을 사용한 보안 권한 관리
- 모니터링 및 디버깅 (Debugging)을 위한 CloudWatch 사용
- AI 기반 시스템을 위한 우아한 폴백 (Fallback) 메커니즘 설계
아마도 가장 중요한 교훈은 AI가 애플리케이션의 기능을 방해하는 의존성이 되기보다는, 애플리케이션을 강화하는 역할을 해야 한다는 점이었습니다.
지능형 서비스(Intelligent services)를 사용할 수 없는 상황에서도 지속적으로 가치를 전달하는 소프트웨어를 구축하는 것은 신뢰할 수 있는 사용자 경험을 만드는 중요한 측면입니다.
향후 개선 사항 (Future Improvements)
FocusAI의 향후 반복 버전에서 탐구하고 싶은 몇 가지 기능들이 있습니다.
계획된 개선 사항 중 일부는 다음과 같습니다:
- Amazon Cognito를 사용한 사용자 인증
- 생산성 기록 및 분석
- 주간 생산성 보고서
- 캘린더 연동
- 회의 요약
- AI 생성 일일 일정
- 스마트 리마인더 및 알림
이러한 기능들이 추가되면 FocusAI는 단순함을 유지하면서도 일일 계획 보조 도구에서 더욱 완벽한 생산성 동반자로 진화할 수 있을 것입니다.
라이브 데모 (Live Demo)
FocusAI 체험하기
https://main.d10s0skyfp0lmj.amplifyapp.com/
소스 코드 (Source Code)
GitHub 저장소
https://github.com/ABDULLAH408/FocusAI
마치며 (Closing Thoughts)
FocusAI를 구축한 것은 현대적인 서버리스 기술과 생성형 AI (Generative AI)가 일상적인 문제를 해결하기 위해 어떻게 함께 작동할 수 있는지 탐구할 수 있는 기회였습니다.
이 프로젝트는 소프트웨어 개발에서 제가 점점 더 중요하다고 느끼는 하나의 아이디어를 강화해 주었습니다. 훌륭한 애플리케이션이 항상 수십 개의 기능을 갖출 필요는 없다는 점입니다. 때로는 가장 좋은 솔루션이 사용자의 일상에서 작지만 반복되는 마찰(friction)의 원인을 제거하는 것입니다.
FocusAI는 그러한 철학을 염두에 두고 구축되었습니다.
이 서비스는 단순한 작업 목록을 명확한 계획으로 변환하여, 사용자가 다음에 무엇을 할지 결정하는 데 드는 시간은 줄이고 의미 있는 진전을 이루는 데 더 많은 시간을 쓸 수 있도록 돕습니다.
이 프로젝트가 여러분에게 유용하기를 바라며, 여러분의 피드백이나 향후 개선을 위한 제안을 듣고 싶습니다.
읽어주셔서 감사합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기