[OSSCA] 2025 오픈소스 컨트리뷰션 아카데미 발대식 후기 이번에 Playhive에서 만난 팀원분의 추천으로 오픈소스 컨트리뷰션 아카데미에 지원하게 되었다!사실 이런 컨트리뷰션 관심 있었는데 혼자 하기에는 너무 어려울 것 같다는 생각에 나도 모르게 뒤로 미루고 있었다...정말 좋은 기회가 될 것 같아서 아주 그냥 바로 지원했다! 참여 프로젝트가 15개나 있어서 고르는데 너무 많고 어려운것도 많았다.....나는 개발할때 git을 활용 하는데, git의 복잡한 구조를 시각화해서 개발 history를 잘 이해할 수 있게 해주는 프로젝트인 [Githru-VScode-Extension] 프로젝트 팀에 지원했다 ㅎㅎ 사실 나는 스프링 프레임워크를 사용하면서 VSCode보다 Intellij를 많이 사용하지만, 예전부터 관심있던 Extension을 경험해볼 기회라고 생각해서.. 2025. 7. 17. [PlayHive] Redisson을 제거했더니, 성능이 2.5배 빨라졌다 - 추천 기능 리팩토링의 두번째 진화 "락은 정말 필요했던 걸까?" 코드 리뷰 도중 백엔드 팀원은 한 마디가 시작이었다."이거... Redisson 분산락 쓰셨던데, 추천 수가 자주 바뀌고 조회도 많은 API잖아요? 락 계속 쓰면 오히려 병목 되지 않을까요?" 🔍 질문에서 시작된 새로운 고민기존에 Redisson을 도입해 추천 기능에 분산락을 적용한 이유는 명확했다:"추천은 사용자별 중복을 막아야 하고, 멀티 인스턴스에서도 정합성이 보장되어야 하니까." 그러나 새로 합류한 팀원의 질문은 단순히 도구 사용 여부가 아니라, 설계 자체의 적합성을 다시 돌아보게 만들었다.“추천이면, 락보다 Redis에서만 처리하고 나중에 DB로 밀어넣는 방식이 더 좋지 않을까요?” 🧠 생각의 전환 – 도구보다 데이터 흐름이 먼저다사실 처음엔 멀티 인스턴스 환경.. 2025. 6. 26. [PlayHive] Headless Chrome 크롤링 시 좀비 프로세스 정리 및 메모리 문제 해결 방법 기존에 batch 서버를 구축하여 크롤링을 진행하시던 백엔드 개발자 분이 팀을 나가시면서 작업하셨던 부분을 넘겨받아 운영중에 일어나는 에러나 크롤링 코드를 유지보수하게 되었다.배치 인스턴스가 갑자기 중단되거나 크롤링이 메모리문제로 Fail뜨는 경우가 종종 있었는데 내가 넘겨받게되면서 문제를 해결하고 싶어서 이것저것 살펴보게되었다. 그래서 이 포스팅은 Playhive 서비스 뉴스 크롤링 배치 서버에서 발생한 문제 해결 사례를 공유하려고 한다. 우선 작업을 넘겨받게 되고나서, 뉴스 크롤링이 while문을 사용하여 새로운 뉴스를 모두 가져오는 것이 좋지만 현재는 끊기지 않고 운영이 잘되는것이 목표이며, 모든 뉴스를 가져오지는 않는 전제로 스크롤 max 수치를 정하여 크롤링하도록 코드 수정하였다.또한, WebD.. 2025. 6. 18. [PlayHive] S3 PresignedUrl 기반 파일 업로드/삭제 API 구현기 (with AWS & MinIO) 게시판이나 댓글과 같은 커뮤니티 기능에서 이미지/동영상 업로드가 필요해져서 S3를 이용해서 파일 업로드를 구현하게 되었다.서버에서 파일을 직접 받아 S3에 업로드하는 구조도 고려했지만, 다음과 같은 이유로 Presigned URL 방식을 선택했다.🔒 보안 강화서버를 거치지 않고 클라이언트가 직접 S3에 업로드함으로써, 서버에 파일이 직접 노출되지 않음Presigned URL에 유효시간 제한을 둠으로써, 만료된 URL로는 접근이 불가능업로드 가능한 경로와 권한을 세밀하게 제어 가능 (ex. 특정 경로에만 PUT 허용)🚀 성능 향상파일이 서버를 거치지 않고 바로 S3로 전송되기 때문에 서버 부하 감소서버의 네트워크 I/O와 메모리 사용량 절감🧱 시스템 아키텍처 분리업로드/다운로드 로직이 스토리지와 클라.. 2025. 6. 18. [PlayHive] Redis, Redisson 으로 조회수·댓글수·추천수 처리 성능 44% 향상시키기 📌 이글 이후, Redisson 분산락 구조 역시 다시 점검하게 되면서 성능을 더 끌어올리기 위한 리팩토링을 진행했습니다.👉 2025.06.26 - [# Study/프로젝트] - [PlayHive] Redisson을 제거했더니, 성능이 2.5배 빨라졌다 - 추천 기능 리팩토링의 두번째 진화 [PlayHive] Redisson을 제거했더니, 성능이 2.5배 빨라졌다 - 추천 기능 리팩토링의 두번째 진화"락은 정말 필요했던 걸까?"코드 리뷰 도중 백엔드 팀원의 한 마디가 시작이었다."이거... Redisson 분산락 쓰셨던데, 추천 수가 자주 바뀌고 조회도 많은 API잖아요? 락 계속 쓰면 오히려 병목 되지jiy0ung.tistory.com🎯 프로젝트 배경과 기능의 목적이 글은 스포츠 커뮤니티 서비스 .. 2025. 6. 17. [PlayHive] 댓글/대댓글 구조 리팩토링하기 🎯 프로젝트 배경과 기능의 목적본 리팩토링은 스포츠 커뮤니티 서비스 Playhive의 댓글/대댓글 기능 개선을 위한 작업입니다.Playhive는 게시판, 뉴스, 경기 예측 등 다양한 콘텐츠를 중심으로 팬들이 소통하는 플랫폼으로, 사용자 간 활발한 상호작용을 위해 댓글 기능이 핵심적으로 사용됩니다.특히 “내가 쓴 댓글 보기” 기능 추가 요청이 들어오면서, 기존 구조에서 성능 문제와 유지보수 이슈가 불거졌고, 이에 따라 전체 댓글 시스템의 구조를 재설계하게 되었습니다.이 글에서는 기존 설계의 한계를 짚고, 이를 어떻게 단일 테이블 구조로 리팩토링하여 성능과 확장성을 개선했는지를 써본 정리글입니다.❗️기존 설계의 한계점을 만나다...처음 DB를 설계 할 당시 게시판/뉴스/경기 예측 등 카테고리 마다 별도의 .. 2025. 6. 11. [Spring] @Controller, @RestController 차이 보통 웹에서 화면 전환 없이 이루어지는 동작들은 대부분 비동기 통신이다. 비동기 통신을 하기 위해서는 클라이언트가 서버로 요청 메시지의 body에 데이터를 담아서 보내야 하고, 서버도 클라이언트에 응답하기 위해서 body에 데이터를 담아 보내야한다.이 때의 body를 각각 Request Body와 Response Body라고 부르는데, 이러한 body에 담기는 데이터 형식은 JSON이다. @RequestBody 어노테이션은 이러한 비동기 통신에서 쓰이는 body안의 데이터(JSON)를 자바 객체(VO)로 변환해주는 어노테이션이고, @ResponseBody 어노테이션은 보내려는 자바 객체(VO)를 데이터객체(JSON)로 바꿔 body안에 넣어주는 어노테이션이다. @Controller 와 @RestContr.. 2025. 1. 21. [Spring] @Scheduled로 만료 RefreshToken 정리하기 2024.11.27 - [# Study/Spring] - [Spring] Spring Security + JWT 구현 해보기 (다중 토큰) (2) [Spring] Spring Security + JWT 구현 해보기 (다중 토큰) (2)Spring Security + JWT 다중토큰 코드를 작성하려고 한다.우선, 이전 Srping Security + JWT 단일토큰 포스팅의 코드를 가져와 수정하여 작성할 것이기 때문에 코드를 보려면 링크를 따라가면 확인 할 수 있jiy0ung.tistory.com 이전 포스팅인 Spring Security + JWT 다중토큰 로그인을 공부하면서 문제점을 발견했다.로그인을하고 로그아웃을 하지 않으면 재로그인시 RefreshToken이 또 생성되어서 한 ID의 RefreshT.. 2024. 11. 30. [Spring] Spring Security + JWT 구현 해보기 (다중 토큰) (2) Spring Security + JWT 다중토큰 코드를 작성하려고 한다.우선, 이전 Srping Security + JWT 단일토큰 포스팅의 코드를 가져와 수정하여 작성할 것이기 때문에 코드를 보려면 링크를 따라가면 확인 할 수 있다.https://jiy0ung.tistory.com/26 [Spring] 스프링 시큐리티 JWT 구현 해보기 (단일 토큰)스프링 시큐리티를 활용하여 JWT 기반의 인증/인가를 구현하고, MySQL 데이터베이스를 활용하여 회원 정보 저장을 해볼 것이다.서버는 웹 페이지를 응답하는 것이 아닌 API 클라이언트 요청을 통해jiy0ung.tistory.com 이 코드에서 다중 토큰으로 변경을 위해 수정 할 부분은 로그인 성공 시 처리 부분과 JWT 검증 필터 부분이다.로그인 성공 시.. 2024. 11. 27. 이전 1 2 3 4 다음