백엔드 향후 개선 Todo #631
kimminkyeu
started this conversation in
마일스톤
Replies: 1 comment
-
멘토링1. DB 데이터 이전 시 스프링 배치 사용운영 서버 데이터를 개발 서버(홈 서버)로 데이터를 옮길 때 dump 쓰지 않고, 스프링 배치 써서 옮겨보는 건 어떨까? 2. 멀티 모듈에서 DB가 여러 개 있을 때, 여러 DB 항상 접근하는 것이 아닌 다른 모듈에 있는 API 호출해봐라.why? 생각의 틀이 너무 DB에서 데이터를 가져오는 것에만 집중해있다. 현업에서는 API 호출이 더 많다. 커널 종료 후 홈 서버 도메인 변경minlife -> techpick |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
백엔드 개선 Todo
♻️
Refactor
공유 api 코드 리팩토링 - ✅ 완료현재 구현되어 있는 SharedFolderService 코드를 개선할 필요 있음.⚡ 공유 api 조회 성능 개선 - ✅ 완료 - 📔 노션에 정리한 개선 과정
현재 공유된 폴더를 클릭하면 실시간으로 DB를 끌어와서 보여준다.- 소유자가 공유한 폴더를 변경했을 때, 비동기로 업데이트 Task를 등록한다.
- 공유된 폴더의 최신 데이터는 N 분 뒤 부터 보여진다.
근데 조회할 때 마다 계속 끌어와서 보여줄 필요가 없다.
📦
DB
엔티티 설계 문제 --> 수형님 V3 진행중 + 별도 DB / 서버 올릴 예정순서 리스트 엔티티 개선 (동시성 문제 다수 발생)JPA
@Versioning
처리했으나네임드락 (
DB
orConcurrent Set
)으로 개선 가능⚡
업데이트 주기
링크 og 파싱 개선 --> ✔️ DB에 링크 정보를 저장, 적절한 타이밍에 갱신 완료링크에 대한 이미지, 제목 등을 우리는 프론트 / 백 에서 실시간으로 끌어온다.이걸 서버에서 미리 저장해두고 CDN처럼 우리쪽에서 제공 하는게 필요하다.
⚡
Cache
랭킹 정보 획득 성능 개선 --> ✔️ 로컬 캐시Caffeine
으로 처리 완료회원 가입시 랭킹 정보를 랭킹 서버에서 획득해서 회원 가입.랭킹 획득 자체가 현재 성능이 안좋고, 이걸 회원 가입할 때 + 홈에서 로드할때 마다 가져오면 매우 느릴 것으로 판단
1. 근데 이 캐싱은 랭킹 서버와 API 서버 중간에 둘 지?
2. 근데 밖에 두지 말고 랭킹 모듈 안에 두는게 맞을지?
--> ✔️ 캐싱 결과를 모든 랭킹 api 사용자들에게 일관되게 주기 위해선 랭킹 API 안에 두는게 맞다고 본다.
🖥️ Admin App + Server 별도로 올리기 - 통계 조회용
- 조회수 그라파나 + 프로메테우스로 지표 시각화
🦺 주기적 자동 백업
수형님이 만들어둔 import export 로직을
그대로 써서 json으로 s3에 주기적으로 백업해두는 방식
DB 자체를 백업해두는 방식
--> Discussion 백엔드 개선에 추가할 것
📦 DB 백업
📦
DB
마이그레이션 방식 개선API V2
버전과API V3
버전이 각각 디비와 서버를 가진다.V3가 운영이 시작된 이후에 적용될 가능성이 있어 둘을 모두 서빙할 준비가 되어야 하고
V2로 서비스 하다가 V3로 전환하기 위한 DB 싱크 작업, 서버 전환 작업을 준비해야 함.
개발하면서 DB 칼럼이 조금씩 변경되고 있는데,
현재는 운영 전이라 DB를 미는 식으로 간단히 하지만….
운영 시작하면 절대 이렇게 할 수 없으니까.
편하고 일괄적으로 관리할 수 있는 방법을 적용할 것.
🔴
Alarm
개발자 에러 알림Kibana --> Webhook --> Discord
)FATAL
에러 코드는 디스코드로 알림이 오도록 처리 필요.빠르게 원인 파악하기 위함
깃헙 액션 클라이언트 혹은 ELK의 로그 레벨을 이용해서 알림으로 연결 할 것.
운영 환경과 홈 서버 환경 차이
🔴 비정상적 사용 감지
불법 토토 사이트 담고 클릭 1000만번 매크로 돌리면 바로 랭킹에 노출됨.
감지해서 차단하는 조치가 필요
- Rate Limit 걸고, 이걸 넘기면 뭔가 이상한 시도니 개발자에게 알림 주고 예의 주시 하게 처리
- 혹은 경찰청 불법 사이트 리스트 받아와서 블랙 리스트로 갖고 있어도 될 듯
🔒 네임드락 구현 개선 필요성 (
AOP or 함수형
)- UserID를 함수 파라미터가 아닌 외부에서 주입받도록 처리하는 방법으로 개선
- [REFACTOR] 분산 락이 되지 않는 문제 해결 및 서비스에 분산 락 추가 #687 PR 참고
- MySQL을 이용한 분산락으로 여러 서버에 걸친 동시성 관리
🆕
Recommendation
링크 파싱 및 분류 방법 개선app.blog.me/article/1
에서 도메인만 빼와서app.blog.me
를 이용. --> 특정 사이트에 대한 인기 정보 획득이 가능🆕
Recommendation
북마크 랭킹 / 추천 시스템 개선현재 단순하게 북마크 조회 랭킹, 북마크 저장 랭킹을 집계한다.
조금 더 다양한 랭킹 / 추천 방식을 적용해볼 필요가 있다.
🆕
Recommendation
태그 개선 문제현재 태그는 사용자마다 서로 다르게 설정한다.
이를 해결하려면 여러 사용자별 태그를 하나의 공통 키워드로 묶어줘야 우리가 태그 추천을 하거나 태그 기반 랭킹을 할 수 있다.
React
,리액트
,react
를React.js
라는 키워드로 묶는다.Beta Was this translation helpful? Give feedback.
All reactions