Introduction
현직자들의 조언을 구하고 싶거나 창업을 준비하면서 다양한 인맥을 구축하고 싶은가요? SML은 이러한 니즈를 가진 여러분을 위해 탄생한 비즈니스 네트워킹 서비스입니다. 이 플랫폼은 여러분의 현재 인맥을 바탕으로, 그들의 인맥까지 소개받을 수 있도록 도와줍니다. 이를 통해 여러분은 전문가와의 연결을 강화하고, 새로운 기회를 모색하며, 실질적인 조언을 받을 수 있습니다.
SML은 크레딧 기반의 시스템을 도입하여, 사용자가 보다 체계적으로 인맥을 탐색하고 구축할 수 있도록 지원합니다. 여러분은 크레딧을 사용해 일촌의 일촌에게 접근할 수 있으며, 이를 통해 단순한 연결을 넘어서 전문적인 인사이트를 얻을 수 있는 인맥을 형성할 수 있습니다. 이제 SML과 함께, 여러분의 커리어와 사업 아이디어를 다음 단계로 도약시켜보세요.
📹Demo
온보딩 페이지
회원가입&로그인
일촌리스트 페이지
검색 페이지
소개요청
일촌요청 및 크레딧 선물
마이페이지
ERD
System Architecture
저희는 6주간의 개발 기간 동안 컨테이너 기반 가상화 플랫폼인 Docker를 사용하였습니다. Docker는 가상머신보다 가벼우며, 이미지와 컨테이너 레이어를 사용해 실행 속도가 빠른 장점이 있습니다.
이를 통해 팀원 간의 개발 환경과 운영 환경의 차이로 인한 문제를 줄일 수 있었습니다. 또한, Docker Compose를 사용하여 여러 개의 컨테이너를 묶어 손쉽게 관리할 수 있었습니다.
Frontend는 React를 사용하여 사용자 인터페이스(UI)를 구축하고, Vite를 통해 빠르고 효율적인 빌드를 구현하였습니다. ESLint와 Prettier를 설정하여 코드의 일관성과 품질을 높였습니다.
Zustand를 활용하여 비동기 작업을 관리하고 상태를 처리하였으며, Tailwind CSS를 통해 스타일 속성을 지정해주었습니다. 또한, Cytoscape.js를 사용하여 일촌 목록 조회 부분에서 관계도를 그래프로 시각적으로 표현하였습니다.
Backend에서는 프레임워크로 배우기 쉽고 API 개발에 최적화된 빠르고 효율적인 FastAPI를 선택하였습니다. FastAPI는 Uvicorn ASGI 서버와 함께 비동기 함수를 지원하여 여러 작업을 동시에 처리할 수 있습니다.
또한, 자동으로 API 문서를 생성하는 Swagger UI를 제공하여 개발 과정에서 API 테스트를 쉽게 수행할 수 있었습니다.
Elasticsearch는 오픈 소스 검색 엔진으로, HTTP 프로토콜을 통한 REST API로 데이터를 조작할 수 있습니다. 색인(Indexing)과 역색인(Inverted Index) 기능을 활용하여 형태소 분석 기반의 자연어 처리로 강력한 검색 기능을 제공합니다.
이를 통해 나와 이촌 관계의 사람들 중 찾고 싶은 지인을 손쉽게 검색할 수 있습니다.
HTTP는 요청과 응답을 생성하는 데 시간이 소요되기 때문에, 채팅 기능과 같은 양방향 소통을 구현하는 데에는 한계가 있습니다.
이에 반해 WebSocket은 속도가 빠르고 양방향 통신 및 실시간 네트워크 기능을 수행할 수 있어 적합한 선택이었습니다. 또한, FastAPI가 WebSocket 라이브러리를 지원하여 쉽게 구현할 수 있었습니다.
Nginx는 비동기 이벤트 기반으로 설계되어 한정된 리소스에서도 대규모 동시 연결을 처리할 수 있으며, 메모리와 CPU 사용량이 적습니다.
또한, 프록시 서버로서 로드 밸런싱을 통해 서버 부하를 효율적으로 분산시킬 수 있어 성능 최적화에 유리합니다.
PostgreSQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 높은 동시성을 지원하며 빠른 데이터 읽기 및 쓰기 성능을 제공합니다. 또한 다양한 프로그래밍 언어와의 호환성이 뛰어나 개발자에게 사용이 편리하며, 정형화된 테이블에 데이터를 저장하여 CRUD작업을 구현할 수 있습니다.
그리고 PostgreSQL은 ACID 속성을 준수하여 데이터 무결성과 안정성을 보장합니다. NoSQL 구조의 Redis를 사용하여 사용자의 로그인 세션 ID를 저장하고 관리함으로써 빠르고 효율적인 세션 관리가 가능합니다.
모니터링에서는 Prometheus를 이용해 CPU, 메모리 사용률, 트래픽 등의 시스템의 메트릭을 수집하고 그 결과를 Grafana를 통해 시각화하여 관찰하였습니다. 메트릭을 사용하면 애플리케이션의 대기 시간과 처리하는 데이터 양을 추적하여 시스템의 성능 저하의 원인을 쉽게 알아낼 수 있습니다.
Elastic stack(Beats, Elasticsearch, Logstash, Kibana)을 사용해 로그를 수집하고 데이터 분석에 필요한 모든 유형의 데이터를 실시간으로 검색, 분석 및 시각화하는 과정을 통해 시스템내 문제점을 파악하고 서비스의 안정성을 높일 수 있었습니다.
EC2 서비스를 이용하여 사용자는 애플리케이션에 적합한 인스턴스를 설계하고 간편하게 생성할 수 있습니다.
프로필 사진 저장에는 S3를 사용하여 대규모 데이터를 안정적으로 저장할 수 있으며, 보안과 비용 면에서도 효율적입니다.
데이터베이스로는 AWS RDS를 통해 PostgreSQL을 연동하였습니다. RDS는 다양한 관계형 데이터베이스와 호환성이 우수하며, 장애 발생 시 자동으로 별도의 데이터베이스 인스턴스를 활성화하여 데이터 손실을 방지할 수 있는 고가용성 옵션을 제공합니다. 또한, RDS는 비용 효율성 측면에서도 탁월한 장점을 가지고 있어 선택하게 되었습니다.