From acddb532d07926257b03a752be328d192edf16cf Mon Sep 17 00:00:00 2001 From: Seonghun Jeong <119427233+zzoe2346@users.noreply.github.com> Date: Thu, 14 Nov 2024 23:56:20 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EB=94=94=EB=A0=89=ED=86=A0=EB=A6=AC=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EC=95=84=EB=9E=98=EB=A1=9C=20=EC=98=AE?= =?UTF-8?q?=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 126 +++++++++++++++++++++++++++--------------------------- 1 file changed, 64 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index dcb4318..e0ac9ba 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,10 @@ - [2. 포인트](#2-포인트) - [3. 콜백 서비스](#3-콜백-서비스) - [4. 안부 전화 서비스](#4-안부-전화-서비스) -- [📂 디렉토리 구조](#-디렉토리-구조) - [🧑‍💻 관리자 및 개발자 편의기능](#-관리자-및-개발자-편의기능) - [👩‍👩‍👧‍👧 협업 효율](#-협업-효율) +- [📂 디렉토리 구조](#-디렉토리-구조) + ## 🚀 배포 주소 ### ✔️ Client [https://sinitto.life/](https://sinitto.life/) @@ -431,6 +432,68 @@ redis-server ’보호자‘는 ’서비스 이용내역‘ 페이지에서 완료 대기 상태인 안부전화 서비스를 완료상태로 변경할 수 있습니다. + +## 🧑‍💻 관리자 및 개발자 편의기능 + +### 1. 서버 업데이트(무중단 배포)시 Slack 채널을 통한 알림기능 +> Github Action을 통해 서버 업데이트 트리거가 발생하면, 서버 무중단배포 쉘스크립트가 작동하며 +슬랙 페이지 서버-로그 채널에서 백엔드 서버 재부팅 로그 (하단 50줄), 무중단 배포 관련 결과를 제공합니다. +> #### 슬랙 초대링크 : [https://join.slack.com/t/sinitto/shared_invite](https://join.slack.com/t/sinitto/shared_invite/zt-2uqws45gg-bsPq8cuH2iQV6Jk1Y3Zglw) + +![image](https://github.com/user-attachments/assets/c5202037-a313-443a-b0fa-700e372344b6) + +### 2. 사용자의 포인트 충전 및 출금 요청시, Slack 채널을 통한 알림기능 +> 보호자의 충전, 시니또의 출금 요청이 들어오면 관리자의 원활한 확인을 위해 슬랙에 메시지를 전송하고, 버튼을 통해 어드민페이지로 접속할 수 있습니다. +> #### 슬랙 초대링크 : [https://join.slack.com/t/sinitto/shared_invite](https://join.slack.com/t/sinitto/shared_invite/zt-2uqws45gg-bsPq8cuH2iQV6Jk1Y3Zglw) + +![image](https://github.com/user-attachments/assets/b5927b13-08a8-4345-b31a-cb0e42896075) + +### 3. 더미데이터 로그인기능 +> 개발 과정에서의 개발자들의 실제 더미데이터 기반 웹 사용 및 테스트를 위해, Server Side Rendering 방식의 더미데이터 로그인 페이지를 구현하였습니다. +서버에 저장된 더미데이터로만 로그인이 가능하며, 개발환경(로컬환경에서 프론트 서버가 열려있을 시) 및 배포서버로 로그인이 가능하고, +로그인시 해당 더미데이터 유저의 JWT(AccessToken 및 RefreshToken)을 발급하여 함께 전송합니다 +> #### 더미데이터 로그인 페이지 : https://sinitto.site/dummy [비밀번호 : 1234] +> +image-3 +image-3 + + +## 👩‍👩‍👧‍👧 협업 효율 + +프론트엔드-백엔드 간 협업 과정 중 제공된 api를 연결하는 과정에서 소통에 어려움이 있었습니다. + +학업과 병행할 수 있는 카카오테크캠퍼스의 특성 상 조원들마다 개발을 진행하는 시간이 달라 실시간으로 +문제를 해결하기 어려운 문제점이 있었습니다. 또한 프론트엔드에서 백엔드 서버로 api를 통해 요청을 보냈을 때, +에러가 발생했을 경우 자세한 오류 메시지가 응답을 통해 나타나지 않았으며, 실제 오류 내용은 +백엔드 서버에 기록되는 문제가 있었습니다. + +또한 백엔드 담당 조원에게 질문을 하더라도 답변을 받기 전까지는 그동안 하던 작업을 +진행하지 못하는 문제가 생겨, 전체적인 개발 속도가 느려지는 문제가 있었습니다. + +이러한 방법을 어떻게 해결할 수 있을까 고민해보던 중, 가장 먼저 떠오른 방법은 '에러 코드가 생기면 +Slack의 채널에 전송을 하는 것' 이었습니다. + +백엔드 서버에서 자바 파일을 실행할 경우 nohup 명렬어를 통해 실행하는데, 이 때 자바 파일을 실행한 기록이 +out 확장자 파일에 남게 됩니다. 이 중에서 에러가 발생한 경우 'ERROR' 라는 단어가 포함이 되는데, +이러한 패턴을 확인하여 'ERROR'이 포함된 단어가 out 확장자 파일에 기록되면 Slack의 '서버-로그' 채널에 +전송되도록 하였습니다. 이를 통해 프론트엔드 개발자분들이 어떠한 오류인지 확인할 수 있게 하였습니다. + +그러나 한 가지 문제가 더 있었습니다. 개발 언어가 다르기 때문에 프론트엔드의 경우 자바에서 발생하는 +에러코드를 읽는데 어려움이 있다는 것이었습니다. 실제로 프론트엔드 개발자분들께 해당 에러코드에 대해 +이해가 되는지 물어봤을 때, 이해하기가 어려워 ChatGPT와 같은 LLM 모델에 에러코드를 복사하여 질문을 +한다는 답변을 받았습니다. + +이러한 불편함을 해결하기 위해, 현재 무료로 이용할 수 있는 LLM 모델인 Upstage의 'Solar-pro' 모델과 +연결을 하여 이를 해결하였습니다. 기존의 에러코드를 Slack에 바로 전송하는 대신, 해당 메시지를 +rest 요청을 통해 LLM 모델에 답변을 받고, 해당 답변을 포함하여 에러코드와 같이 보내도록 변경하였습니다. + +이러한 과정을 통하여 개발 과정에서의 소통의 어려움을 해결할 수 있었습니다. + +아래는 실제 개발 과정에서 사용된 내역입니다. 해당 내용과 관련된 쉘 스크립트는 백엔드 내부 쉘스크립트 모음 +(https://www.notion.so/3ce05a49e06046469bde14c12b8b9c00) 중 '서버에러 자동 공지 관련코드' 에서 +확인할 수 있습니다. +![image](https://github.com/user-attachments/assets/0f7ee6d3-f468-4f48-9e5f-91beaaeefb8a) + ## 📂 디렉토리 구조 ```c @@ -553,65 +616,4 @@ Team8_BE └── service ``` -## 🧑‍💻 관리자 및 개발자 편의기능 - -### 1. 서버 업데이트(무중단 배포)시 Slack 채널을 통한 알림기능 -> Github Action을 통해 서버 업데이트 트리거가 발생하면, 서버 무중단배포 쉘스크립트가 작동하며 -슬랙 페이지 서버-로그 채널에서 백엔드 서버 재부팅 로그 (하단 50줄), 무중단 배포 관련 결과를 제공합니다. -> #### 슬랙 초대링크 : [https://join.slack.com/t/sinitto/shared_invite](https://join.slack.com/t/sinitto/shared_invite/zt-2uqws45gg-bsPq8cuH2iQV6Jk1Y3Zglw) - -![image](https://github.com/user-attachments/assets/c5202037-a313-443a-b0fa-700e372344b6) - -### 2. 사용자의 포인트 충전 및 출금 요청시, Slack 채널을 통한 알림기능 -> 보호자의 충전, 시니또의 출금 요청이 들어오면 관리자의 원활한 확인을 위해 슬랙에 메시지를 전송하고, 버튼을 통해 어드민페이지로 접속할 수 있습니다. -> #### 슬랙 초대링크 : [https://join.slack.com/t/sinitto/shared_invite](https://join.slack.com/t/sinitto/shared_invite/zt-2uqws45gg-bsPq8cuH2iQV6Jk1Y3Zglw) - -![image](https://github.com/user-attachments/assets/b5927b13-08a8-4345-b31a-cb0e42896075) - -### 3. 더미데이터 로그인기능 -> 개발 과정에서의 개발자들의 실제 더미데이터 기반 웹 사용 및 테스트를 위해, Server Side Rendering 방식의 더미데이터 로그인 페이지를 구현하였습니다. -서버에 저장된 더미데이터로만 로그인이 가능하며, 개발환경(로컬환경에서 프론트 서버가 열려있을 시) 및 배포서버로 로그인이 가능하고, -로그인시 해당 더미데이터 유저의 JWT(AccessToken 및 RefreshToken)을 발급하여 함께 전송합니다 -> #### 더미데이터 로그인 페이지 : https://sinitto.site/dummy [비밀번호 : 1234] -> -image-3 -image-3 - - -## 👩‍👩‍👧‍👧 협업 효율 - -프론트엔드-백엔드 간 협업 과정 중 제공된 api를 연결하는 과정에서 소통에 어려움이 있었습니다. - -학업과 병행할 수 있는 카카오테크캠퍼스의 특성 상 조원들마다 개발을 진행하는 시간이 달라 실시간으로 -문제를 해결하기 어려운 문제점이 있었습니다. 또한 프론트엔드에서 백엔드 서버로 api를 통해 요청을 보냈을 때, -에러가 발생했을 경우 자세한 오류 메시지가 응답을 통해 나타나지 않았으며, 실제 오류 내용은 -백엔드 서버에 기록되는 문제가 있었습니다. - -또한 백엔드 담당 조원에게 질문을 하더라도 답변을 받기 전까지는 그동안 하던 작업을 -진행하지 못하는 문제가 생겨, 전체적인 개발 속도가 느려지는 문제가 있었습니다. - -이러한 방법을 어떻게 해결할 수 있을까 고민해보던 중, 가장 먼저 떠오른 방법은 '에러 코드가 생기면 -Slack의 채널에 전송을 하는 것' 이었습니다. - -백엔드 서버에서 자바 파일을 실행할 경우 nohup 명렬어를 통해 실행하는데, 이 때 자바 파일을 실행한 기록이 -out 확장자 파일에 남게 됩니다. 이 중에서 에러가 발생한 경우 'ERROR' 라는 단어가 포함이 되는데, -이러한 패턴을 확인하여 'ERROR'이 포함된 단어가 out 확장자 파일에 기록되면 Slack의 '서버-로그' 채널에 -전송되도록 하였습니다. 이를 통해 프론트엔드 개발자분들이 어떠한 오류인지 확인할 수 있게 하였습니다. - -그러나 한 가지 문제가 더 있었습니다. 개발 언어가 다르기 때문에 프론트엔드의 경우 자바에서 발생하는 -에러코드를 읽는데 어려움이 있다는 것이었습니다. 실제로 프론트엔드 개발자분들께 해당 에러코드에 대해 -이해가 되는지 물어봤을 때, 이해하기가 어려워 ChatGPT와 같은 LLM 모델에 에러코드를 복사하여 질문을 -한다는 답변을 받았습니다. - -이러한 불편함을 해결하기 위해, 현재 무료로 이용할 수 있는 LLM 모델인 Upstage의 'Solar-pro' 모델과 -연결을 하여 이를 해결하였습니다. 기존의 에러코드를 Slack에 바로 전송하는 대신, 해당 메시지를 -rest 요청을 통해 LLM 모델에 답변을 받고, 해당 답변을 포함하여 에러코드와 같이 보내도록 변경하였습니다. - -이러한 과정을 통하여 개발 과정에서의 소통의 어려움을 해결할 수 있었습니다. - -아래는 실제 개발 과정에서 사용된 내역입니다. 해당 내용과 관련된 쉘 스크립트는 백엔드 내부 쉘스크립트 모음 -(https://www.notion.so/3ce05a49e06046469bde14c12b8b9c00) 중 '서버에러 자동 공지 관련코드' 에서 -확인할 수 있습니다. -![image](https://github.com/user-attachments/assets/0f7ee6d3-f468-4f48-9e5f-91beaaeefb8a) -