Project 99

[싹틔움] 04/07 개발일지 FeignClient 도입으로 분산 서버에서의 인증 문제 해결

💡 개요메인서버와 알림서버가 분리된 현 구조의 알림서버는 누구나 다른 사람의 알림을 확인할 수 있다는 치명적인 오류가 있었다. 이를 해결하기 위한 고민을 담았다. 💡 문제 분석 @GetMapping(value = "/v1/notifications/{userId}/subscribe", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter subscribe(@PathVariable Long userId) { SseEmitter emitter = notificationService.subscribe(userId); 기존 방식에서는 단순히 userId 값을 param 으로 받아서 구독하고 해당 userId 로 들어오는 알림 ..

[싹틔움] 04/06 개발일지 Kafka 도입

💡 목표싹틔움 서버에 Kafka 를 도입해 메인서버와 알림서버 사이에서 데이터들이 성공적으로 주고 받을 수 있고자 했다.📚 메인서버 Kafka 설정KafkaConfig더보기@Configuration@EnableKafkapublic class KafkaConfig { @Value("${app.kafka-brokers}") private String kafkaBrokers; @Bean public KafkaTemplate kafkaTemplate() { return new KafkaTemplate(producerFactory()); } @Bean public ProducerFactory producerFactory() { Map produce..

[싹틔움] 04/05 개발일지 알림서버 분리 MSA 방식

🌱 개요싹틔움 메인서버에서 알림 기능을 구현하는 서버를 따로 분리해 MSA 방식으로 구현하고자 했다. 🌱 왜 굳이 서버를 분리할까?1. 독립적인 확장성알림 기능은 사용량이 급격하게 늘어날 수 있는 부분이다. 그렇기 때문에 MSA 로 분리하면 알림 서버만 별도로 스케일 업/아웃할 수 있어 유연성이 증가한다. 2. 장애 격리알림기능에 트래픽이 몰리거나, 카카오 등 외부 API 알림 기능을 구현할 때 이 기능에서 문제가 생겨도 메인 서버에 영향을 주지 않아 안정성이 증가한다. 3. 독립적인 배포 및 개발알림 서버는 다른 주기로 배포하거나, 다른 언어나 프레임 워크로 개발이 가능해진다.  4. 유지보수 용이성관심사가 명확하게 분리되어 집중적으로 관리할 수 있고 다른 팀원들과 협업시에도 수월하다. 코드베이스가..

Project/싹틔움 2025.04.06

[트렌드매거진] 25.03.25 개발일지/ 클러스터링 기반 태그 분류 고민, 태그 임베딩과 FAISS

📚 개요기존에 구현했던 방식인 아티클 생성 후에 태그들이 생성되어도 사용자 관심도를 계산하기 위해서 태그들간의 유사도를 계산하는 로직이 들어가지 않는 한 사용자가 그 전에 게시글과 상호작용을 하여도 관심도를 계산할 수가 없다.그렇다고 유사도를 측정하는 로직을 넣자니, 시간이 오래 걸리기 때문에 한계가 있었다. 📚 고민* 클러스터링 기반 접근 태그를 사전에 클러스터링해서 새 태그를 클러스터에 매핑. 사용자 관심도도 클러스터 단위로 관리 (?)세부 과정:초기 클러스터링:태그를 메인 카테고리(예: "스포츠")별로 나눠 클러스터 생성(예: "축구 클러스터", "농구 클러스터").Tag_Clusters에 저장.새 태그 처리:기존 클러스터와 비교 → 유사하면 배정, 아니면 Temp_Tags에 임시 저장.새벽에 ..

[트렌드매거진] 25.03.24 개발일지/ 아티클 작성 프로세스 최적화 및 트랜잭션 적용

📚 Article 작성 로직 고민  💡 현재 로직:아티클 생성 (3.62s) → 태그 5개 및 아티클과의 연관성 분석 및 테이블 생성 (9.16s)   → 기존 태그들과의 유사도 분석 및 테이블 생성 (1m 30s) 문제: 시간이 많이 걸린다. 1. 우선 태그를 5개에서 3개로 줄여야겠다. ai 가 5개를 뽑으면서 태그가 너무 다양해지고 의미는 같고 단어만 조금 다른 태그들이 생겼다. 2. 연관성 분석을 꼭 해야할까? 라는 생각을 했다. 어차피 연관이 있는 태그를 ai 가 뽑아주는건데 그걸 수치화로 더 자세히 할 필요가 있을까. 3. 기존 태그들을 전체 조회하면서 생성된 태그들과의 유사도를 분석하고 저장하는 로직을 게시글 등록과는 분리시켜야겠다. 시간이 많이 걸리고 이는 점점 태그가 많아질수록 증가될..

[트렌드매거진] 25.03.22 개발일지/ 카테고리별 아티클 조회 알고리즘 고민

📚 서비스 개요와 설계 목표⚡ 고민메인 카테고리만으로 글을 나열하면 사용자가 세부 관심사를 반영하기 어렵다. 예를 들어, "스포츠" 안에 "축구"와 "농구"가 섞이면 사용자가 원하는 주제를 필터링하기 힘들다. 나는 AI가 상세 카테고리를 동적으로 생성해 이를 해결하고자 했다.  Grok3 는 상세 카테고리를 초기에는 최대 5개로 제한하고, 최소 2개 글이 있어야 생성하도록 제안했다. 이는 콘텐츠 부족 문제를 피하면서도 유연성을 유지할 거 같지만 더 생각해봐야겠다.📚 상세 카테고리 설계와 문제 해결🚨 동적 상세 카테고리 도입상세 카테고리(태그)는 게시글당 5개까지 동적으로 생성된다. 나는 이를 AI가 글 내용을 분석해 자동으로 분류하는 방법을 생각했다.예를 들어, "손흥민 골 기록" 글은 "유럽축구"..

[싹틔움] 11/22 개발일지 최종 발표 및 개인 KPT 회고

🌱 개인 KPT 회고KEEP, 다음 프로젝트로 가져갈 - 팀원들과 소통하는 자세, 상대방 의견을 존중하고 나와 의견이 다르다면 그냥 부정하기 보다 나의 의견을 정확하게 전달한 점- 1달 동안 개발자들의 리더의 자리에서 책임감 있게 주어진 역할을 다 해낸 점, 다음 프로젝트에서 구성원이라면 리더의 책임감을 이해할 것- Github Actions 를 활용한 CI/CD 자동화 부터 AWS 환경 구축까지 진행하며 개발 뿐만 아니라 개발 이후에 배포까지의 단계를 넓은 시야로 경험해 볼 수 있었던 점- 맡은 부분이 아니더라도 팀원들이 공부한 내용인 Kafka, elastic search 에 대한 지식을 쌓은 점 PROBLEM, 버려야 할- 처음에는 프로젝트 마일스톤을 통해 서로 진행도를 공유하고 회의를 할 때에도..

Project/싹틔움 2024.12.01

[싹틔움] 11/20 개발일지 인프라 설계도 작성 : AWS 환경 구축

💡 목표우리 프로젝트의 인프라를 한 눈에 파악할 수 있도록 인프라 설계도를 작성해보았다.🌱 Github Actions개발자가 github 을 통해 main 브랜치에 pull request 를 하면 Github Actions 를 활용한 CI/CD 자동화를 통해 Docker hub 에 이미지가 push 되고 인스턴스에서는 이를 pull 로 당겨와 업데이트를 반영한다. 🌱 EC2메인 서버 두 대를 비롯한 알림서버, 프로젝트에 사용된 Redis, Kafka, Elastic search 는 각 각 EC2 로 띄워 Port 를 연결해주었다.데이터베이스는 AWS 에서 제공하는 RDS 서비스를 활용해서 연결해주었다. 🌱 파일 저장싹틔움 서비스에 저장되는 파일 이미지 등은 S3 에 저장된다. 🌱 Applicat..

Project/싹틔움 2024.12.01

[싹틔움] 11/19 개발일지 Route53 도메인 연결

💡 목표내 프로젝트에 ALB 설정을 했고, DNS 이름으로 접속을 하는데에는 불편함이 있기 때문에 도메인을 구매해 Amazon Route 53 서비스를 이용해 연결하기로 했다. 저렴한 도메인을 구매하고자 했기 때문에 가비아에서 .site 도메인을 구매했고 연결하려 한다. https://hanstory33.tistory.com/224 [CS] DNSppt : DNS - 프레젠테이션 (canva.com) youtube : [CS발표] DNS (youtube.com)hanstory33.tistory.com 이전에 DNS 에 대한 개념을 공부했던 경험이 있어서 이해하는데에 도움이 많이 되었다.ALB 를 연결하면 위처럼 DNS 이름이 나온다.이를 내가 구매한 도메인과 연결을 해야한다.  Route 53 서비스에..

Project/싹틔움 2024.12.01