개발자

3개의 레이어(?)를 나눠 개발하는거 가능한가요?

2024년 05월 15일조회 51

안녕하세요 대학교에서 졸프를 하고있는데 주제는 정했고, 이제 어떻게 구현해야할지 그때그때 학습하면서 부딪혀보자 라는 마인드로 하고 있습니다. 본론으로 들어가면 3개의 레이어(?)로 나눠서 하나는 음성을 녹음하는 역할만 수행 다른하나는 음성을 그때그때 텍스트로 변환(TTS) 나머지하나는 음성에 대한 질문 처리 및 대답 반환 이런식으로 역할을 나눠서 그 일만 하게 하고 싶은데 이런식으로 구현이 가능한가요? 어렴풋이 분산시스템, 람다아키텍처 등등을 알아보다가 좀 어려운 것 같아서 해당하는 부분이 구현이 가능한지, 가능하다면 어떤 무엇을 써야할지 (Ex. AWS lambda) 같은 조언 해주실 수 있다면 대단히 감사하겠습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

포크코딩님의 프로필 사진

1. 분산 시스템 사용 - 분산 시스템이라고 개념은 어렵지 않습니다. 그냥 컴퓨터 여러대 쓰는겁니다. 분산 시스템에서 레이어는 컴퓨터 한 대로 생각하셔도 됩니다. 각 기능을 처리하는 어플리케이션을 각 컴퓨터에 배포하고 실행하세요. 질문에 작성하신 요구사항은 각 컴퓨터간 동기화 및 스트리밍이 필요합니다. gRPC 등을 이용하세요. ## 졸작을 위해 추천하는 방식인가? - 굳이?... 2. 서버리스(람다 등) 또는 엣지 사용 - 람다 같은 서버리스 서비스는 상시 구동 되는 서버를 두는게 아니라 때에 따라 필요한 함수만 실행시키는 방식으로 사용합니다. 각 레이어는 실행시킬 '함수'에 대응된다고 생각하셔도 됩니다. 상태 저장이나 동기화 위해 upstash(https://upstash.com/) 같은 서비스 사용을 권장합니다. ## 졸작을 위해 추천하는 방식인가? - 람다를 쌩으로 쓰지 않아도 원하는 기능을 제공하는 AWS 서비스들이 있습니다. 람다는 다른 AWS 서비스들을 호출하는 용도로 사용한다면 생각보다 쉽게 만들 수도 있을거 같습니다. 3. 그냥 컴퓨터 하나에 개발하기 - 1,2번에서 설명된 방식말고 그냥 컴퓨터 하나에서 개발해도 됩니다. 꼭 다른 기능들이 필요하다고 컴퓨터가 여러개 필요한건 아니니까요. 멀티프로세싱, 멀티스레딩, 이벤트 드리븐 등 다수의 요청을 처리하는 방법론을 채택하여 개발하시면 됩니다. ## 졸작을 위해 추천하는 방식인가? - 컴퓨터에 대한 이해도를 높힐 수 있습니다. 또한 시스템 콜 사용에 대한 경험을 할 수 있는 방식입니다. 어떤 서비스를 만들겠다는 마음보다 배움의 목적이 크다면 추천합니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 05월 15일

네, 그런 구조로 개발하는 것이 가능합니다. 일반적으로 이러한 역할 분리는 '마이크로서비스 아키텍처'라는 패턴에서 보통 찾아볼 수 있습니다. 각 레이어 혹은 서비스가 하나의 고유한 기능만을 담당하게 함으로써 어플리케이션의 복잡성을 관리하고 유지보수 및 확장을 용이하게 만듭니다. 1) 음성 녹음: 애플리케이션 내에서 사용자의 음성을 녹음하는 모듈 혹은 서비스를 개발해야 합니다. 2) TTS(Text-to-Speech): 이 부분은 일반적으로 API가 제공되는 서드파티 서비스를 사용합니다. 예를 들어 Google Cloud Text-to-Speech, AWS Polly 등 3) 질문 처리 및 대답 반환: 이 부분은 NLP(Natural Language Processing)를 활용하여 구현할 수 있습니다. 자연어 처리는 딥러닝과 같은 머신러닝 기법들을 많이 활용합니다. Google Dialogflow, Microsoft LUIS 같은 플랫폼도 존재합니다. AWS Lambda를 이용해서 각각의 마이크로서비스 작업들을 체계적으로 나누어 처리하는 것도 가능합니다. Lambda는 이벤트 주도형 컴퓨팅 서비스로서, 코드를 실행하는 데 필요한 컴퓨팅 리소스를 자동으로 관리해주므로 인프라에 대한 걱정 없이 각 서비스의 로직에만 집중할 수 있습니다. 다만, 분산 시스템과 마이크로서비스 아키텍처 모두 복잡성을 관리하고 오류 대응 등에 일정 수준의 경험이 요구되므로, 프로젝트의 규모와 팀원들의 기술 스택을 고려하여 선택해야 합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!