전체 글 51

[AWS] EC2 생성 및 실행

지금까지 FastAPI로 만든 애플리케이션을 Docker, AWS 를 활용하여 배포해보도록 하겠습니다.1. AWS EC2 생성2. Docker Image Build and Push3. EC2 인스턴스 접속 및 실행1. AWS EC2 생성AWS 프리티어를 사용할 예정이기에 "프리 티어 사용 가능" 이라고 적혀있는 범위 내에서 타입들을 선택 해줍니다.  저는 Ubuntu  OS를 선택해 주었고  인스턴스 유형은 프리 티어가 지원하는 t2.micro를 선택해주었습니다. 키 페어는 인스턴스에 접근할 수 있는 강력하게 설정된 비밀번호입니다. 기존에 생성해둔 키페어가 있다면 사용하면 되고, 없다면 새로운 키 페어를 만들어줍니다. 저는 RSA 유형에 OpenSSH와 함께 사용하는 .pem 프라이빗 키 파일 형식을 선..

CampusMeet 2024.09.30

[AutoScaling] 다양한 AutoScaling 전략

1. AutoScaling2. HPA3. CA 1. AutoScalingAutoScaling이 효율적이라는 이야기를 듣고 적용하려고 알아보니, 생각보다 종류가 다양했습니다. 제가 조사한 것 외에도 여러 세부적인 AutoScaling 방식이 존재했습니다. 하지만 이번에는 일반적으로 많이 사용되며, 제가 프로젝트에 적용할 AutoScaling 방식들에 대해 간단히 설명하고 넘어가겠습니다.수직적 스케일링:VPA (Vertical Pod Autoscaler) 활용Pod의 리소스를 감시하여, Pod의 리소스가 부족한 경우 Pod를 Restart하며 Pod의 리소스를 증가수직적 증가 (Scale Up) , 수직적 감소 (Scale Down)Stateless App에 적합초기에는 노드의 CPU와 메모리를 증가시키는 ..

CampusMeet 2024.09.19

[DNS] Nginx ingress controller 와 Domain

1. Nginx ingress controller2. 도메인 구매3. 도메인 연결1.  Nginx ingress controller이전 시간에는 hoseo-meet-web 서비스를 LoadBalancer 타입으로 생성하고, 할당된 ExternalIP를 이용해 웹 브라우저에서 접근하는 방법을 실습했습니다. 하지만 여러 개의 서비스를 모두 LoadBalancer 타입으로 설정하면, 비효율적일 뿐만 아니라 관리하기도 어렵습니다. 이 문제를 해결하기 위해서는 각 서비스를 ClusterIP 타입으로 생성하고, 외부 트래픽을 적절하게 라우팅해줄 중앙 관리자가 필요합니다. 바로 이 역할을 수행하는 것이 NGINX Ingress Controller입니다.  Ingress Controller는 클러스터 외부에서 들어오..

CampusMeet 2024.09.15

[NKS] NKS를 활용한 배포 (1)

1. NKS(Ncloud Kubernetes Service)2. 클러스터 접속 이번 프로젝트를 진행하면서 클라우드 서비스는 이제 선택이 아닌 필수 요소가 되었습니다. 처음에는 가장 많이 사용되는 AWS를 고려했으나, "제 8회 개방형 클라우드 플랫폼(K-PaaS) 기반 서비스 개발 아이디어 공모전"을 알게 되었습니다. 이 공모전은 NAVER Cloud, NHN Cloud, KT Cloud 중 하나를 제공받아 해당 플랫폼을 기반으로 서비스를 개발하는 것이 목표입니다. 저희 팀은 수상을 목표로 하기보다는 AWS 외의 다양한 클라우드 플랫폼을 경험해보고, 무료로 클라우드 환경을 제공받는 기회를 활용하기 위해 참여하기로 결정했습니다. 그중 Naver Cloud의 NKS를 선택했으며, 이번 포스팅에서는 이 과정에..

CampusMeet 2024.09.08

[CS] .env 파일 유출 문제와 해결 방안

1. 발생 문제2. 해결 과정3. 추가 문제 발생 및 해결 과정 1. 발생 문제CampusMeet 프로젝트를 진행하면서 형상관리는 GitHub를 통해 이루어졌고, 저장소는 public으로 관리하고 있었습니다. 개발 도중 GitHub를 확인하던 중, .env 파일이 그대로 저장소에 노출된 것을 발견했습니다. 다행히 초반이었고 파일에는 로컬 DB에 대한 간단한 정보만 담겨 있었지만, 이후에는 API 키나 비밀번호 등 민감한 정보들이 다뤄질 예정이었기 때문에, 이를 미리 해결하기로 했습니다. 2. 해결 과정1 ) .env 파일 제거 및 .gitignore 설정먼저, .env 파일이 앞으로 푸시되지 않도록 .gitignore 파일에 추가해줍니다. echo ".env" >> .gitignore 명령어를 입력하면 ..

CampusMeet 2024.08.28

[Backend] FastAPI

프로젝트의 백엔드를 FastAPI로 구성하기로 했지만, 실전에 들어가 보니 FastAPI가 상대적으로 덜 대중적이다 보니 자료를 찾기가 쉽지 않고, 디렉토리 구조를 어떻게 잡아야 할지 감이 잘 오지 않았습니다. 그래서 "https://github.com/fastapi/full-stack-fastapi-template"를 참고하여 디렉토리 구조를 작성해보았습니다. 오늘은 이 디렉토리 구조의 각 부분이 어떤 역할을 하는지 간단하게 정리하도록 하겠습니다.1. 디렉토리 구조 시각화2. 디렉토리 구조별 역할1. 디렉토리 구조 시각화디렉토리 구조를 작성했지만, 막상 만들어보니 헷갈리는 부분이 많고 한눈에 들어오지 않아서 구조를 한눈에 보면서 각 디렉토리별 역할을 정리해보기로 했습니다. 외부 사이트를 이용할까 했는데..

CampusMeet 2024.08.14

[Crawling] Crawling 을 통한 데이터 수집

프로젝트에서 지도를 통해 학교 주변의 가게 정보와 자취방 정보를 함께 제공하려고 합니다. 그러나 이러한 정보는 공공 데이터에서 제공되지 않으며, 별도의 API도 존재하지 않습니다. 따라서 이번 기회를 활용해 직접 크롤링을 통해 데이터를 수집하려고 합니다. 오늘은 우선 가게들의 이름만 크롤링을 통해 가져오는 것을 목표로 하겠습니다.1. Crawling 이란2. Python Crawling 라이브러리3. Code Review 1. Crawling 이란웹 크롤링은 웹 사이트에 있는 정보를 자동으로 빠르게 수집하는 기술입니다. 이는 데이터 분석, 웹사이트 자동화, 인공지능 학습 데이터 수집 등 다양한 분야에서 활용되고 있습니다. 저는 이번 프로젝트에서 파이썬을 사용해 크롤링을 진행할 예정입니다. 파이썬 크롤링은..

CampusMeet 2024.08.11

[CS] vscode kernel 가상환경 안보임

VSCode에서 .ipynb 파일을 열고 실행하려면 우측 상단에서 커널을 지정해야 합니다. 일반적으로 기본 제공되는 파이썬 커널을 사용해도 되지만, 대부분은 자신이 만든 가상환경을 지정합니다. 이렇게 하면 가상환경에 필요한 패키지를 설치하고 버전을 관리하여 프로젝트를 효과적으로 관리할 수 있습니다. 그치만 가상환경을 만들어도 커널을 선택하려고하면 잘 뜨지 않는 경우가 있습니다. 이럴 경우에는 "Ctrl+Shift+p" 를 눌러서 "Python 인터프리터 선택"을 들어가줍니다.  클릭해도 커널을 선택했을때처럼 원하는 가상환경이 보이지 않을것입니다. (보이면 그냥 클릭해주세요)"인터프리터 경로 입력"에서 "찾기"를 클릭하여 직접 만든 가상환경 디렉터리 안의 "python.exe" 파일을 선택하면 됩니다. 가..

CS 2024.07.02

[FastAPI] FastAPI 란?

1. FastAPI2. 가상환경 생성3. 설치 및 예제1. FastAPIFastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python의 API를 빌드하기 위한 웹 프레임워크로 Python 3.6 이상에서 비동기 프로그래밍을 사용합니다. 파이썬 웹 프레임 워크 중 가장 빠르다고 알려져 있습니다. FastAPI가 많이 사용되는데는 아래와 같은 이유가 있습니다. 타입 힌트와 Pydantic 모델을 사용하여 데이터 검증과 직렬화를 자동으로 처리합니다. 이를 통해 개발 속도를 높이고, 오류를 줄일 수 있습니다.Swagger와 ReDoc을 통해 API 문서를 자동으로 생성합니다. 이 기능을 활용하여 개발자와 사용자가 API를 쉽게 이해하고 사용할 수 있도록 합니다.비동기 Python 코..

FastAPI 2024.06.18

[FastAPI] FastAPI+Hugging Face

1. Hugging Face 2. Hugging Face와 FastAPI 통신3. FastAPI와 Next.js 통신  오늘은 졸업 프로젝트에서 사용한 FastAPI를 사용하여 Hugging Face에 등록된 모델의 API를 통해 데이터를 요청하고, 이를 Next.js에서 요청하여 응답하는 일련의 과정에 대해 알아보도록 하겠습니다. 1. Hugging Face 트랜스포머 기반의 다양한 모델들과 학습 스크립트를 구현해놓은 일종의 모듈입니다. 기존의 트랜스포머를 학습시킨다고 하면 딥러닝 프레임워크를 선택하고, 그에 맞게 구현을 해야했습니다. 하지만 허깅페이스는 그런 함수들이 이미 정의 되어있기 때문에, 간단하게 모델을 불러서 쓸 수 있습니다. 또한 가장 좋은 점은 다른 누군가가 이미 학습한 모델을 가져다 쓸..

FastAPI 2024.05.11