Skip to content

Commit

Permalink
docs: 리드미 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
kanguk01 committed Nov 14, 2024
1 parent 4166b8b commit 6794d15
Showing 1 changed file with 74 additions and 29 deletions.
103 changes: 74 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,18 @@
<b>Splanet:</b> <a href="https://www.splanet.co.kr" target="_blank"><b>https://www.splanet.co.kr</b></a>
</div>

---

## 📖 목차
* [Introduction](#-프로젝트-개요)
* [주요 기능](#-주요-기능)
* [기술 스택](#-기술-스택)
* [개발 관련 블로그](#-개발-관련-Blog)
* [팀원](#-팀원)
* [소개](#소개)
* [주요 기능](#주요-기능)
* [기술 스택](#기술-스택)
* [시스템 아키텍처](#시스템-아키텍처)
* [데이터베이스 ERD](#데이터베이스-erd)
* [모니터링](#모니터링)
* [AI 파인 튜닝](#ai-파인-튜닝)
* [개발 관련 블로그](#개발-관련-블로그)
* [팀원](#팀원)

---

Expand Down Expand Up @@ -106,6 +112,8 @@

---

<div align="center">

## 💻 기술 스택

| **분야** | **사용 기술** |
Expand All @@ -116,8 +124,12 @@
| **Infrastructure** | ![Amazon EC2](https://img.shields.io/badge/Amazon%20EC2-FF9900?style=for-the-badge&logo=amazonec2&logoColor=white) ![AWS ELB](https://img.shields.io/badge/AWS%20ELB-8a2be2?style=for-the-badge&logo=awselasticloadbalancer&logoColor=white) ![Docker Compose](https://img.shields.io/badge/Docker%20Compose-2496ED?style=for-the-badge&logo=docker&logoColor=white) |
| **Monitoring** | ![Prometheus](https://img.shields.io/badge/Prometheus-E6522C?style=for-the-badge&logo=prometheus&logoColor=white) ![Grafana](https://img.shields.io/badge/Grafana-F46800?style=for-the-badge&logo=grafana&logoColor=white) ![AWS CloudWatch](https://img.shields.io/badge/AWS%20CloudWatch-FF4F8B?style=for-the-badge&logo=amazonaws&logoColor=white) |

</div>

---

<div align="center">

## 🛠 시스템 아키텍처

<div align="center">
Expand All @@ -135,6 +147,12 @@
| **무중단 배포 (Blue-Green Deployment)** | **Elastic Load Balancer (ELB)** 를 사용하여 두 개의 백엔드 인스턴스(Blue와 Green)로 트래픽을 분산시켜 무중단 배포를 지원합니다. <br> 새로운 버전이 배포될 때, 먼저 하나의 서버 컨테이너가 업데이트되고, 이후 ELB를 통해 트래픽을 새 컨테이너로 전환하여 사용자에게 끊김 없는 서비스를 제공합니다. (다운타임 1초 미만) |
| **CI/CD 파이프라인** | GitHub Actions를 통해 자동화된 CI/CD 파이프라인을 구성하였으며, 코드 업데이트가 발생할 때마다 Vercel과 EC2에서 자동으로 빌드 및 배포가 이루어집니다. 이를 통해 개발과 배포 과정의 효율성을 높였습니다. |

</div>

---

<div align="center">

## 🗂 데이터베이스 ERD

<div align="center">
Expand All @@ -153,49 +171,68 @@
| **구독(Subscription)** | `subscription` 테이블은 사용자의 구독 상태를, `payment` 테이블은 구독 결제 내역을 기록합니다. |
| **댓글(Comment)** | `comment` 테이블에서 각 `user`에 작성된 댓글을 관리하며, 작성자와 유저 ID를 연결합니다. |

## 🖥️ 모니터링
</div>

---

<div align="center">
<img src="https://github.com/user-attachments/assets/efd26371-750c-476c-bb36-edb6a2a46c54" width="700" alt="Monitoring Diagram">
</div>

Amazon CloudWatch의 기본 기능과 Log 그룹, Log를 남기는 코드를 이용해 구현했습니다. Docker Compose 기반으로 웹이 작동하여, Docker 내부 문서와 로그를 동시에 복사하는 형식으로 로깅을 구현했습니다.
## 🖥️ 모니터링

<img src="https://github.com/user-attachments/assets/1d0af14f-37dd-4948-8d4a-67546c34923a" width="700" alt="Monitoring Diagram">

[🖥️ 모니터링 🖥️](https://monitoring.splanet.co.kr/d/fe38bkz9ydkowa/8-splanet?from=now-7d&to=now&timezone=browser)

#### 👀 Viewer Account 👀
> **ID**: splanet
> **PW**: splanet3
>
`Amazon CloudWatch`를 활용하여 시스템 성능을 모니터링하고, Log 그룹과 사용자 정의 Log를 생성해 서비스 상태와 오류 로그를 관리합니다.

`Docker Compose`를 통해 웹 애플리케이션을 구성하며, 각 컨테이너의 내부 로그를 외부 파일로 동기화하여 **실시간 로그 수집**이 가능합니다.

[🖥️모니터링 주소🖥️](http://monitoring.splanet.co.kr)
위 모니터링 주소에서 로그인 시
- **ID**: splanet
- **PW**: splanet3

(viewer 권한)으로 로그인 하시고, **Dashboard** -> **splanet**에서 확인 가능합니다!
`Grafana``Prometheus`를 결합하여 시각화된 대시보드를 제공하고, 애플리케이션 및 인프라스트럭처의 다양한 메트릭을 **실시간으로 모니터링**합니다.

이를 통해 **CPU 사용량**, **메모리 사용량**, **네트워크 트래픽**, **요청 수** 등 주요 성능 지표를 직관적으로 파악할 수 있습니다.

이러한 **모니터링 및 로그 관리 시스템**을 통해 시스템 안정성과 서비스 가용성을 높였습니다.


</div>

<div align="center">

### 각 항목 설명

| 항목 | 설명 |
|--------------------------|----------------------------------------------------------------------|
| **MAU (Monthly Active Users)** | 최근 30일간의 월간 활성 사용자 수를 나타냅니다. 값이 12로 표시되고 있습니다. |
| **DAU (Daily Active Users)** | 최근 7일간의 일간 활성 사용자 수를 나타냅니다. 값이 8로 표시됩니다. |
| **MAU (Monthly Active Users)** | 최근 30일간의 월간 활성 사용자 수를 나타냅니다. |
| **DAU (Daily Active Users)** | 최근 7일간의 일간 활성 사용자 수를 나타냅니다. |
| **상태코드 지표** | 1시간 기준으로 성공 요청(success_requests), 클라이언트 에러(client_error_requests), 리디렉션 요청(redirect_requests)의 비율을 나타냅니다. |
| **동시 접속수** | 최근 24시간 동안의 동시 접속 사용자 수를 표시합니다. |
| **DB Connections** | 데이터베이스 연결 상태를 나타냅니다. 특정 시간대에 연결 수가 증가하는 패턴을 보여줍니다. |
| **DB 빈 공간** | RDS의 **FreeStorageSpace** 지표로, 데이터베이스 인스턴스의 사용 가능한 저장 공간을 나타냅니다. 현재는 약 20GB에서 사용 중입니다. |
| **DB 빈 공간** | RDS의 **FreeStorageSpace** 지표로, 데이터베이스 인스턴스의 사용 가능한 저장 공간을 나타냅니다. |
| **CPU 사용량** | 시스템의 CPU 사용량을 나타내며, 시간대별 CPU 사용률 변화를 보여줍니다. |
| **네트워크 요청/수신** | 네트워크 요청 수와 수신된 데이터를 시간대별로 나타내며, 요청 수의 변화를 시각적으로 제공합니다. |
| **Request Count** | API 요청 수를 나타냅니다. 최근 요청 수의 변화를 보여주는 그래프입니다. |
| **초당 읽기/쓰기 작업 수** | 시스템에서 초당 읽기 및 쓰기 작업 수를 보여줍니다. 읽기 작업은 4.17, 쓰기 작업은 6.08입니다. |
| **경로별 요청 수** | 각 API 경로별로 요청 수를 나타내며, 가장 많이 호출된 경로들을 보여줍니다. 예: `/api/users/me` (33건) |
| **초당 읽기/쓰기 작업 수** | 시스템에서 초당 읽기 및 쓰기 작업 수를 보여줍니다. |
| **경로별 요청 수** | 각 API 경로별로 요청 수를 나타내며, 가장 많이 호출된 경로 순으로 정렬됩니다. ) |

## 🤖AI(파인 튜닝)
#### Splanet 파인 튜닝 (Fine-Tuning)
</div>

<details>
<summary> 개요</summary>
---

Splanet은 OpenAI API를 활용하여 `chatGPT 4o mini` 모델을 기반으로 한 지능형 일정 관리 기능을 제공합니다. JSONL 형식의 학습 데이터를 사용하여 모델을 사용자 요구사항과 컨텍스트에 맞게 파인 튜닝합니다.
<div align="center">

## 🤖AI(파인 튜닝)

</details>
>Splanet은 OpenAI API를 활용하여 `chatGPT 4o mini` 모델을 기반으로 한 지능형 일정 관리 기능을 제공합니다.
>
>JSONL 형식의 학습 데이터를 사용하여 모델을 사용자 요구사항과 컨텍스트에 맞게 **fine-tunning** 을 진행하였습니다.
>
---
</div>

<details>
<summary> JSONL 학습 데이터 형식</summary>
Expand Down Expand Up @@ -263,11 +300,11 @@ Splanet은 OpenAI API를 활용하여 `chatGPT 4o mini` 모델을 기반으로
```json
{
"deviceId": "<USER_DEVICE_ID>",
"groupId": <GROUP_ID>,
"groupId": "<GROUP_ID>",
"planCards": [
{
"title": "약속",
"description": "오늘 22시에 시작하는 약속",
"description": "22시에 약속 나가기",
"startDate": "2024-11-13T22:00:00",
"endDate": "2024-11-13T23:00:00",
"accessibility": true,
Expand All @@ -287,6 +324,11 @@ Splanet은 OpenAI API를 활용하여 `chatGPT 4o mini` 모델을 기반으로
---

위 과정을 통해 Splanet 향상된 일정 관리 기능을 제공할 수 있는 최적화된 파인 튜닝 모델을 구축할 수 있습니다.

---

<div align="center">

## 🔗 개발 관련 Blog

| 설명 | 링크 | 설명 | 링크 |
Expand All @@ -295,6 +337,9 @@ Splanet은 OpenAI API를 활용하여 `chatGPT 4o mini` 모델을 기반으로
| CLOVA Speech 실시간 스트리밍 | [Blog](https://kanguk-room.notion.site/STT-CLOVA-Speech-API-123036cad7a88098b644c957f8420080?pvs=4) | 모니터링 | [Blog](https://cobalt-macaroni-f0a.notion.site/Prometheus-Grafana-134e61e098d7804da8e6ef7fcdec80f2?pvs=4) |
| Redis 사용기 | [Blog](https://medium.com/@kanguk.ku/redis-%EC%82%AC%EC%9A%A9%EA%B8%B0-4fd3695ab0c7) | 무중단 배포 구현 | [Blog](https://kanguk-room.notion.site/132036cad7a880e68d7bd8846b25f8a6?pvs=4) |

</div>

---

<div align="center">

Expand Down

0 comments on commit 6794d15

Please sign in to comment.