AI로 확장 가능한 백엔드 구축 방법 알아보기

‘확장형’ 백엔드는 성능 저하 없이 부하 증가를 처리할 수 있는 백엔드입니다.

확장 가능한 백엔드를 구축하려면 데이터베이스 설계 및 배포 전략과 같은 여러 프로세스와 고려 사항이 필요합니다.

이 문서에서는 인공지능(AI)의 도움으로 확장 가능한 백엔드를 구축하는 방법에 대해 알아봅니다.

백엔드를 확장 가능하게 만드는 요소는 무엇인가요?

소프트웨어 개발 수명 주기 동안 구현되는 다양한 요소가 함께 작용하여 백엔드를 확장 가능하게 만듭니다.

백엔드의 확장성에 영향을 미치는 한 가지 요소는 데이터베이스 쿼리 속도입니다.

쿼리가 느리면 서버의 응답 시간이 길어지고 여러 요청을 동시에 처리하는 능력에 영향을 미칩니다.

적절한 스키마 설계를 구현하고 효율적인 쿼리를 작성하여 쿼리를 더 빠르게 만들 수 있습니다.

비동기 처리는 백엔드를 확장성 있게 만드는 또 다른 요소입니다. 리소스 집약적인 작업은 실행 스레드를 차단하고 동시 요청을 처리하는 서버의 기능을 제한할 수 있습니다.

대규모 계산 및 파일 업로드와 같은 리소스 집약적인 작업을 백그라운드 작업으로 위임하여 이 문제를 해결할 수 있습니다.

또 다른 요소는 배포 전략입니다. Back4app과 같은 서비스를 통해 확장 가능한 배포 전략을 사용하여 백엔드를 배포해야 합니다.

예를 들어, 트래픽이 급증하면 새 컨테이너가 자동으로 스핀업되어 수동 개입 없이 여러 인스턴스에 부하를 분산합니다.

마찬가지로 수요가 감소하면 시스템 규모가 축소되어 사용하지 않는 리소스가 해제됩니다.

이 튜토리얼에서는 위에서 언급한 모든 요소를 구현하여 확장성을 갖춘 사육장 관리 애플리케이션을 구축합니다.

AI로 확장 가능한 백엔드 설계하기

위에서 언급했듯이 개집 관리 애플리케이션을 구축하게 됩니다. 애플리케이션 요구 사항은 다음과 같습니다:

  • 애플리케이션을 통해 주인이 반려견을 개집에 체크인할 수 있습니다.
  • 주인이 반려견을 개집에 체크인하면 애플리케이션에 반려견의 이름, 품종, 나이, 주인 이름, 이미지 등 반려견에 대한 세부 정보가 저장됩니다. 그런 다음 소유자를 위한 고유 코드를 생성합니다.
  • 주인이 받은 고유 코드는 방문이 끝날 때 개집에서 개를 찾을 수 있는 유일한 방법입니다.
  • 개집을 방문하는 동안 반려견이 어떤 활동을 했는지 모두 기록하세요. 이 튜토리얼에는 식사, 투약, 미용만 포함됩니다.
  • 방문이 끝나면 주인은 체크인 시 받은 고유 코드를 입력하고 반려견을 찾습니다.

위의 요구 사항을 실현하기 위한 첫 번째 단계는 데이터 중복이 거의 또는 전혀 없는 정규화된 데이터베이스를 설계하는 것입니다.

AI 백엔드 생성기 역할을 하는 Back4app AI 에이전트의 도움을 받아 이 데이터베이스 스키마를 설계하고 생성합니다.

백4앱 AI 에이전트

Back4app AI 에이전트는 Back4app 제품, 백엔드 플랫폼 및 웹 배포 플랫폼과 인터페이스하는 LLM입니다.

프롬프트를 사용하여 이러한 제품과 상호 작용할 수 있으며 AI로 확장 가능한 백엔드를 만드는 데 도움이 됩니다.

AI 에이전트에 액세스하려면 Back4app 계정이 필요합니다. 계정이 없는 경우 무료로 가입할 수 있습니다.

Back4app 계정에 로그인하고 대시보드의 탐색 모음에서 ‘AI 에이전트’ 링크를 클릭합니다.

AI 에이전트 링크가 강조 표시된 Back4app 앱 대시보드 탐색 모음

링크를 클릭하면 아래 이미지와 같이 AI 상담원 페이지로 이동합니다.

Back4app AI 에이전트 시작 페이지

이 페이지에서 백4앱 계정에서 새 BaaS 앱을 생성하라는 메시지 등 다양한 메시지를 입력할 수 있습니다.

AI로 백엔드 구축

Back4app에서 새 백엔드 애플리케이션을 만들려면 아래 프롬프트 또는 이와 유사한 내용을 AI 에이전트에 입력하면 됩니다.

- Create a new backend application called "Kennel Management Backend"

애플리케이션이 성공적으로 생성되었다는 응답이 표시되어야 합니다.

민감한 정보가 삭제된 AI 상담원 응답

생성된 앱은 아래 이미지와 같이 백4앱 대시보드에서 확인할 수 있습니다.

기본 백4앱 대시보드

위 이미지에서 볼 수 있듯이 새 백엔드 앱의 데이터베이스는 기본 _User_Role 클래스를 제외하고는 비어 있습니다.

다음으로 데이터베이스 스키마를 설계하고 백엔드 앱에 추가합니다.

데이터베이스 설계

위의 애플리케이션 요구 사항에 맞게 정규화된 데이터베이스 스키마를 설계하려면 아래 프롬프트 또는 이와 유사한 내용을 AI 에이전트에 입력하세요.

- Design a normalized database schema for a dog kennel management application. 

- The app stores dog details: name, breed, age, a unique owner username, owner contact details, and an image; 

- When an owner checks in and generates a unique code for the owner to retrieve the dog. 

- It tracks activities during the visit (eating, medication, grooming). 
The owner provides the unique code to retrieve their dog at the end of the visit. 

- Ensure relationships between entities like dogs, owners, visits, activities, and the retrieval code are properly structured.

위의 프롬프트는 아래 시각화된 것과 유사한 데이터베이스 스키마를 반환해야 합니다.

정규화된 데이터베이스 스키마의 시각적 표현

위의 데이터베이스 스키마에는 소유자, 반려견, 방문활동의 네 가지 테이블이 있습니다. 소유자는 여러 개의 개를 가질 수 있지만(일대다), 각 개는 dogs 테이블의 외래 키를 통해 연결된 한 명의 소유자에게만 속합니다.

마찬가지로 개는 시간이 지남에 따라 여러 번 방문 (일대다)을 할 수 있으며, 각 방문은 해당 개에 고유하고 외래 키를 통해 방문 테이블에서 추적됩니다.

또한 각 방문에는 수유, 그루밍 또는 투약과 같은 여러 활동 (일대다)이 포함될 수 있으며, 각 활동은 활동 테이블의 visit_id 외래 키를 통해 특정 방문에 연결될 수 있습니다.

이제 데이터베이스 디자인이 완성되었으므로 아래와 유사한 프롬프트를 사용하여 백엔드에서 데이터베이스를 생성하도록 AI에 요청합니다.

- Create the designed database in the backend app "Kennel Management Backend".

데이터베이스가 성공적으로 생성되었다는 응답을 받아야 합니다. 아래 이미지와 같이 앱 대시보드에서 새로 생성된 테이블을 확인하여 확인할 수 있습니다.

새로 생성된 데이터베이스 테이블을 강조 표시하는 Back4app 대시보드.

이제 백엔드를 만들고 애플리케이션의 데이터베이스 테이블을 추가했으므로 애플리케이션 로직을 구현합니다.

AI로 백엔드 로직 구현하기

애플리케이션 요구 사항에서 주인이 반려견을 개집에 체크인하고 반려견의 이름, 품종, 나이, 주인 이름 및 이미지와 같은 세부 정보를 저장하고 주인을 위한 고유 검색 코드를 생성할 수 있어야 합니다.

이러한 요구 사항을 구현하려면 고유한 검색 코드를 생성하는 유틸리티 함수와 업로드 작업으로 인해 애플리케이션의 응답 시간이 느려지지 않도록 백그라운드에서 강아지 이미지를 업로드하는 함수가 필요합니다.

유틸리티 기능 구현

아래 프롬프트 또는 이와 유사한 프롬프트를 AI 에이전트에 제공하여 고유 코드를 생성하는 유틸리티 함수를 만들 수 있습니다:

- Create a utility cloud code function in the "Kennel Management Backend" app that generates  a unique retrieval code for the dogs checked into the kennel.

-Store the code in a `utils.js` file and make the file accessible to the entire application.

아래 이미지의 응답과 유사하게 클라우드 코드 함수가 생성되었다는 응답을 받아야 합니다.

프롬프트에 대한 응답을 보여주는 Back4app AI 에이전트 페이지

그런 다음, 아래 프롬프트 또는 이와 유사한 것을 AI 에이전트에 입력하여 반려견의 이미지를 업로드하고 해당 반려견 기록과 연결하는 함수를 생성합니다:

- Create an asynchronous utility Cloud Code function named `uploadDogImage` that accepts three parameters: `dogName`, `dogImage`, and `dogId`. 

- The function should upload the `dogImage`, using `dogName` as the image name, and ensure that the image is properly associated with the corresponding dog record identified by `dogId`. 

- Implement error handling to manage any issues during the upload process and confirm the association with the dog record.

- Add the `utils.js` file and make it accessible to the entire application.

위의 프롬프트는 반려견 이미지가 올바르게 업로드되고 올바른 반려견 기록과 연결되어 있는지 확인하는 동시에 발생할 수 있는 오류를 처리합니다.

함수가 성공적으로 생성되었다는 응답을 받아야 합니다.

두 유틸리티 함수는 코드 모듈성을 유지하기 위해 utils.js 파일에 구현되었습니다. 이제 애플리케이션에 체크인 기능을 구현하는 데 필요한 두 가지 유틸리티 함수를 갖추었습니다.

체크인 기능 구현

애플리케이션에 체크인 기능을 구현하려면 반려견의 이름, 나이, 품종, 이미지, 소유자의 사용자 아이디가 필요합니다.

그런 다음 주인을 위한 검색 코드를 생성하고, 방문을 기록하고, 반려견의 이미지를 업로드한 다음(백그라운드에서) 주인에게 코드를 반환해야 합니다.

아래 프롬프트 또는 이와 유사한 프롬프트를 AI 에이전트에 제공하여 위의 로직을 백엔드 애플리케이션에 추가할 수 있습니다:

- Create an asynchronous Cloud Code function named `checkIn` in a `main.js` file that accepts five parameters from a request body: `dogName` (String), `dogAge` (Number), `dogBreed` (String), `ownerUsername`(String), and `dogImage` (File). 

- The function should first validate and sanitize each input to ensure they conform to expected types and formats. 

- It should then search for an owner in the `owner` table using `ownerUsername` and create a new owner record if none exists. Next, the function should create a new record in the `dogs` table with  the provided `dogName`, `dogBreed`, `dogAge`, and the corresponding `ownerId`. 

- After that, it should call the `generateRetrievalCode` utility function to create a unique retrieval code. 

- The function must also use the `uploadImage` utility to upload `dogImage`, running this process in the background without awaiting the return value. 

- Finally, it should create a record in the `visits` table that includes relevant details such as the `ownerId`, `dogId`, and the generated retrieval code, and return a success message along with the retrieval code to the user. 

- Ensure error handling is implemented for database operations and input validation, returning appropriate error messages where necessary.

함수가 성공적으로 생성되었다는 응답을 받아야 합니다.

아래 이미지와 같이 앱 대시보드클라우드 코드에서 AI 에이전트가 생성한 코드를 검토하고 필요한 경우 수정할 수 있습니다.

클라우드 코드 버튼과 클라우드 폴더의 파일이 강조 표시된 Back4app 클라우드 코드 페이지

이제 새 개를 개집에 체크인할 수 있습니다. 다음으로 활동 기록 기능을 구현합니다.

활동 기록 기능 구현하기

신청 요건에 따라 신청서에는 방문 기간 동안 반려견이 참여한 모든 활동을 추적할 수 있어야 합니다.

활동 기록 기능을 구현하려면 방문 기록을 가져와서 필요한 정보로 새 활동을 만들어야 합니다.

아래 프롬프트 또는 이와 유사한 프롬프트를 AI 에이전트에 제공하여 위의 로직을 백엔드 애플리케이션에 추가할 수 있습니다:

- Create an asynchronous function called `recordActivity` that accepts three parameters from a request body: `visitId`, `type`, and `description`. 

- It should first check if a visit with the specified `visitId` exists in the database. 

- If the visit is not found, return an appropriate error message. 

- If the visit exists, the function should create a new activity record  with the visitId, type, and description, set the time to the current date, 
and return a success message, after a successful creation.

- Ensure error handling is implemented for database operations and input validation, returning appropriate error messages where necessary.

대시보드에서 이 기능이 올바르게 구현되었는지 확인하고 필요한 경우 변경할 수 있습니다.

결제 기능 구현

체크아웃 기능을 구현하려면 retrieval_code를 사용하여 방문 기록을 가져오고, 관련 반려견 및 소유자 정보를 포함하고, check_out_time을 업데이트한 다음 반려견 및 소유자 정보와 방문의 체크인 및 체크아웃 시간이 포함된 응답을 반환해야 합니다.

아래 프롬프트 또는 이와 유사한 프롬프트를 AI 에이전트에 제공하여 위의 로직을 백엔드 애플리케이션에 추가할 수 있습니다:

- Create an asynchronous cloud code function called `checkOut` that retrieves dog and visit details based on a `retrieval_code` extracted from the request body. 

- The function should fetch the corresponding visit record in the `Visit` table  and include related dog details from the `Dog` table and the `Owner` table. 

- The function should select specific dog attributes such as `name`, `breed`, `age` and image. 

- If no visit is found, return a message indicating that the `retrieval_code` is invalid. 

- Upon successfully finding the visit, the function should update the `check_out_time` to the current date and save the updated visit record. 

- Finally, structure a response that includes the dog's information 
along with its owner details, as well as the visit's `check_in_time` and `check_out_time`. 

- Implement error handling to catch and log any issues during the process, 
returning a relevant error message in case of failure.

AI 에이전트가 생성한 코드는 앱 대시보드클라우드 코드main.js에서 검토할 수 있습니다.

main.js 파일의 내용을 보여주는 Back4app 클라우드 코드 대시보드

결제 기능이 완전히 구현되었으므로 간단한 사육장 관리 애플리케이션의 신청 요건을 완료한 것입니다.

결론

이 문서에서는 체크인을 지원하고, 방문 중 반려견의 활동을 추적하며, 방문이 끝나면 주인이 AI를 사용하여 반려견을 찾을 수 있도록 하는 확장 가능한 개집 관리 애플리케이션을 구축합니다.

애플리케이션의 확장성을 개선하기 위해 정규화된 데이터베이스를 설계하여 쿼리 속도가 느려지지 않도록 했습니다.

또한 강아지 이미지 업로드와 같이 오래 실행되는 작업은 백그라운드에서 실행되는 함수에 위임하고 코드를 파일로 분할하여 유지 관리가 더 쉬워졌습니다.

백엔드가 완성되면 React, Svelte 또는 Vue와 같은 프론트엔드 라이브러리로 구축된 UI에 연결하고 Back4app 웹 배포 플랫폼과 같은 플랫폼에서 Docker를 사용하여 배포할 수 있습니다.


Leave a reply

Your email address will not be published.