부동산 공부 AI 스터디봇 만들기 (3) - 엘리스 클라우드에 배포

2025. 6. 6. 21:32·Homeprotector

서론

부동산 질문에 답을 해주는 스터디 챗봇을 LangChain, FastAPI, Azure OpenAI를 사용해 구현해보았다. 이를 외부에서 사용하기 위해서는 배포하여 공용 URL을 통해 접근 가능하게 구성해야 한다. 배포 방법에는 AWS EC2에 도커 이미지로 만들어 도커 컨테이너로 직접 배포하거나 서버리스로 구축하는 방법도 있지만, 나는 엘리스 클라우드에 띄워보려고 한다. 엘리스 클라우드는 인스턴스 실행 환경을 VSCode로 설정할 수 있기 때문에 로컬에서 VSCode로 구현한 코드를 쉽게 사용할 수 있기 때문에 간편하다.

 

https://elice.io/ko/products/cloud?gad_source=1&gad_campaignid=22534904810&gbraid=0AAAAAoizgMdLGZAwrSnOB1I0RKkVTCYsa

 

그럼 이제 배포 방법에 대해 알아보도록 하자.


배포

엘리스 회원가입, 로그인 등은 생략하도록 하겠다.

인스턴스 생성

클라우드 - 인스턴스 - 인스턴스 생성 버튼을 통해 생성한다.

 

 

내 상황에 맞는 인스턴스 유형, 이름 설정, 실행 환경을 선택하여 우측 하단 인스턴스 생성 버튼을 누른다. 나는 VSCode로 선택하였다.

버튼을 누르면 인스턴스가 생성이 되고 좌측 상단 내 인스턴스 버튼을 눌러 나오면 내가 생성한 인스턴스 정보를 확인할 수 있다.

 

PEM 개인키 발급

좌측의 비밀키 관리 탭을 누른 후 PEM 개인키를 발급받고 다운로드 한다.
(주의 : 발급 후 페이지를 나가면 해당 개인키는 다시 다운로드 받아야 하니 꼭 다운받아서 보관)

 

SSH 접속

SSH 접속 정보 확인

다시 인스턴스 탭으로 돌아와 연결 - 다른 SSH 클라이언트 사용을 클릭한다.

 

 

SSH 연결 가이드를 확인하여 사용자 이름, IP 주소, 포트 번호, 비밀 키 정보를 확인한다.

 

 

위의 SSH 명령어를 통해 접속해도 되지만, 나는 VSCode를 통해 내가 생성한 엘리스 인스턴스 SSH에 접속할 것이기 때문에 아래 정보를 사용할 것이다.

VSCode를 통해 접속

  1. VSCode에서 Remote - SSH 익스텐션을 설치한다.
  2. 설치 이후, 좌측 하단에 있는 연결 버튼을 클릭한 후 Connect to Host 를 선택한다.
  3. 여러 SSH Config 파일 중 사용자 폴더에 있는 config를 선택한다.
  4. 선택한 config 파일에 엘리스 인스턴스 서버 정보를 입력한다.
Host ${설정하고 싶은 이름}
    HostName ${IP 주소}
    IdentityFile ${다운로드 받은 pem 개인키 파일 절대경로}
    User elicer
    Port ${포트 번호}

 

이 때 config 파일을 잘 작성했는데도 접속이 안 된다면 다음 2가지를 확인해보자.

 

- .pem 키를 config 파일과 같은 디렉터리로 복사

cp ${기존 pem 키 경로}/${pem 키 이름}.pem ${이동시킬 경로}/.ssh/

 

- 파일 및 폴더 권한 변경

chmod 600 ~/.ssh/${pem 키 이름}.pem

chmod 600 ~/.ssh/config

chmod 700 ~/.ssh
  1. 파일을 저장한 후, Connect to Host 를 다시 선택했을 때 Host로 설정한 이름이
    나타나면 성공이다.

★ 접속이 완료되면 필요한 익스텐션, 라이브러리 등을 서버 환경에 새로 설치해야 한다. 자기 프로젝트에 필요한 것들을 잘 설치하도록 하자.

 

로컬 환경 익스텐션 그대로 설치

라이브러리 설치

pip install fastapi uvicorn python-dotenv openai pydantic langchain-openai langchain-core langchain

 

이후 적절한 버전의 파이썬을 선택해주고, 코드를 옮겨준다면 모든 준비가 끝난다. 나는 git clone을 통해 코드를 가져왔다.


FastAPI 실행

접속 URL 생성

엘리스 클라우드는 이제 public ip를 제공해주지 않기 때문에 인스턴스 세부 정보(인스턴스 이름 클릭) - 외부 연결 설정 - 연결 생성을 통해 앞서 호스팅을 열었던 서비스의 port 번호를 입력해야 한다.

 

FastAPI의 포트 번호는 8000이기 때문에 8000으로 등록해줬고, 이제 이 서비스의 접속 URL이 생겨 해당 URL을 통해 접근할 수 있다.

배포 테스트

이제 인스턴스 SSH 상에서 아래 명령어를 통해 FastAPI를 실행해보자.

uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

 

잘 실행되는지 확인해보기 위해 {접속 url}/docs 에 접속하면 swagger 화면이 보여 잘 접속되었음을 확인할 수 있다.

 

백그라운드 실행

접속이 잘 되는 것을 확인하였지만, 터미널을 나가게 되면 FastAPI 실행이 멈추면서 인스턴스 접속 URL로도 접근을 할 수 없다. 따라서 구현한 프로젝트를 백그라운드로 실행해주어야 한다.

# 백그라운드 실행
nohup uvicorn app.main:app --host 0.0.0.0 --port 8000 > uvicorn.log 2>&1 &

 

백그라운드로 실행시키면 프로세스를 죽이기 전까지 계속 실행되기 때문에 종료시키지 않는 이상 엘리스 인스턴스 접근 URL을 통해 접근할 수 있고, 우리가 FastAPI를 통해 구현한 AI 서비스를 다른 곳에서 사용할 수 있다. 나는 이 API를 리액트에서 호출할 것이다.

이후 이 백그라운드 프로세스를 죽이고 싶다면 다음 코드를 사용하면 된다.

# 프로세스 확인
pgrep -af uvicorn

# 죽이기
kill <번호>

정상 동작

'Homeprotector' 카테고리의 다른 글

Apache jmeter로 부하 테스트 해보기 (3) - Aggregate Report 응답 시간 소수점으로 확인하는 방법  (0) 2025.06.06
부동산 공부 AI 스터디봇 만들기 (3) - 가드레일 설정  (6) 2025.06.06
Apache jmeter로 부하 테스트 해보기 (1)  (0) 2025.06.02
프로젝트에서 어떤 DB를 사용할까? (3) : MongoDB, Elasticsearch - CDC Pipeline  (0) 2025.05.26
프로젝트에서 어떤 DB를 사용할까? (2)  (0) 2025.05.25
'Homeprotector' 카테고리의 다른 글
  • Apache jmeter로 부하 테스트 해보기 (3) - Aggregate Report 응답 시간 소수점으로 확인하는 방법
  • 부동산 공부 AI 스터디봇 만들기 (3) - 가드레일 설정
  • Apache jmeter로 부하 테스트 해보기 (1)
  • 프로젝트에서 어떤 DB를 사용할까? (3) : MongoDB, Elasticsearch - CDC Pipeline
seoshinehyo
seoshinehyo
seoshinehyo 님의 블로그 입니다.
  • seoshinehyo
    seoshinehyo 님의 블로그
    seoshinehyo
  • 전체
    오늘
    어제
    • 분류 전체보기
      • AWS S3
      • mody
      • umc product team
      • Homeprotector
      • 에러 일기
      • Istio 공부
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
seoshinehyo
부동산 공부 AI 스터디봇 만들기 (3) - 엘리스 클라우드에 배포
상단으로

티스토리툴바