분류 전체보기 270

MSA (마이크로서비스 아키텍처)란?

MSA를 공부하게 된 계기전자도서관 개인 프로젝트를 진행하면서 여러 서비스를 조사하고 참고하면서 "마이크로서비스 아키텍처(MSA)"라는 키워드에 관심이 생겼다. 실제로 배달의민족, 쿠팡과 같은 대규모 서비스들이 MSA 기반으로 유연하게 확장되고 있고 실제 업계에서는 어떻게 설계하고 운영하는지 궁금했다! 그 과정에서 기존 모놀리식 구조와 MSA 구조는 어떤 차이가 있고 MSA의 특징은 무엇인지 학습하게 되었다😉 MSA의 정의 MSA는 Microservices Architecture(마이크로서비스 아키텍처)로, 하나의 애플리케이션을 여러 개의 작은서비스로 나누어 개발하고 운영하는 소프트웨어 아키텍처 스타일이다. 예를 들어 배달의 민족서비스라면 가게, 사용자, 비마트 등등 서비스가 나뉘어 있다. MSA 특징..

카테고리 없음 2025.04.30

ReadHub 프로젝트 회고 - 02

📝 프로젝트 회고Readhub 전자도서관 개인 프로젝트를 진행 중간을 지나면서 잘한 점, 문제점, 계획과 시도할 부분 등을 점검하며구현하면서 느낀점을 회고해보려고 한다!📌 프로젝트 중간 목표SSE 실시간 알림 구현개인별 맞춤추천 고도화 해보기!통계기능 구현 🔧 진행 상황알림 SseEmitter를 활용하여 클라이언트와 서버 간의 단방향 연결 유저별 알림을 관리하기 위한 EmitterRepository 구현반납일 임박, 연체, 예약 도서 알림 등은 @Scheduled 스케줄러를 통해 전송로그인된 사용자별로 고유 SSE 연결을 유지하며 알림 수신 가능 찜하기원하는 도서를 찜하여 찜한 목록에 저장찜하기 취소찜한 도서를 전체 조회통계기간별 대출 건수 조회연체된 도서 목록 조회대출 상태 별 도서 수가장 많이 ..

카테고리 없음 2025.04.18

개인별 맞춤 추천 고도화 과정

개인별 맞춤 추천 기능 구현프로젝트를 진행하며 개인별 맞춤 추천 기능을 어떻게 구현할 것인지 고민하게 되었다.요즘은 거의 모든 서비스 플랫폼에서 개인별 추천 기능이 있고, 스트리밍, 쇼핑몰, 뉴스, 음악 등 많은 곳에서 사용되고 있다.이러한 개인별 맞춤 추천 기능은 사이트의 체류시간 증가와 정교한 마케팅을 위해 꼭 필요한 기능이고, 개인프로젝트에서 꼭 경험해보고 싶어서 구현을 결정하게 되었다!1단계 카테고리 기반 추천public Page findRecommendedBooks(User user, int page, int size) { Pageable pageable = PageRequest.of(page, size, Sort.by("viewCount").descending()); Option..

카테고리 없음 2025.04.15

SSE 실시간 알림기능 구현

실시간 알림 기능 구현전자도서관 개인프로젝트를 진행하는 과정 중 아래와 같은 내용으로책의 반납일자가 임박했을 때 (하루 전)예약한 도서가 대여가능한 상태가 되었을 때반납일자가 지났을때 (연체 시)사용자에게 실시간으로 알림을 제공하면 더 실제 서비스에 유사하고 사용자 편의성이 높아지지 않을까라는 생각으로 구현을 시작하게 되었다. 실시간 알림을 구현하는 방식은 여러 방식이 있지만 크게 웹소켓(Web Socket)과 SSE방식을 많이 사용하는 것 같다! Web Socket웹 소켓은 클라이언트와 서버의 양방향 통신을 가능하게 해주는 네트워크 프로토콜HTTP처럼 요청/응답 방식이 아니라 실시간으로 지연 없이 즉시 데이터를 전달 가능하기 때문에 빠르다! 장점양방향 통신으로 클라이언트와 서버가 자유롭게 통신이 가능연..

카테고리 없음 2025.04.11

ReadHub 프로젝트 회고 - 01

📝 프로젝트 회고Readhub 전자도서관 개인 프로젝트를 진행하면서프로젝트를 하며 느낀 점을 정리하면서, 끝날 때까지 어떻게 발전할 수 있을지 회고하는 시간을 가지려고 한다!📌 프로젝트 목표써보지 않았던 새로운 스택/기술들을 적용해보기!소프트웨어 설계, 개발, 테스트는 물론 배포까지 경험해 보기!복잡도가 있는 프로젝트 도전! 🔧 진행 상황유저Spring Security & JWT 기반 로그인 구현카카오톡 소셜 로그인 구현 → 카카오 계정을 통한 간편 로그인 처리 및 회원 자동 생성Redis를 활용하여 로그아웃 시 토큰을 블랙리스트 처리 및 사용 중이던 Access Token과 Refresh Token을 무효화유저/관리자 권한 분리 및 인증 처리도서도서 등록 / 수정 / 삭제 / 검색 구현인기 도서 ..

카테고리 없음 2025.04.08

Redis 설치 및 구현

1. 터미널로 redis 설치 2. MySQL 업그레이드업그레이드 중, Homebrew가 mariadb와 충돌상태라는 내용의 문제가 생겼다!MySQL과 MariaDB는 같은 바이너리를 제공하여 같이 사용할 수 없다고 한다...! 이를 해결하기 위해 선택한 방법은  3. brew deps --tree mysql 명령어 사용해당 명령어를 사용해서 어떤 패키지가 mysql을 필요로 하는지 확인!LLVM이 MySQL을 의존성으로 포함한다고 나왔다!하지만 너는 MariaDB를 데이터베이스에 사용하고 있어서, MySQL이 필요 없으므로 아래의 방법을 사용해서 해결했다. 4. brew upgrade --ignore-dependencies mysql위 명령어를 사용하면 MySQL을 건너뛰고, 나머지 패키지만 업데이트 ..

카테고리 없음 2025.04.06

카카오톡 로그인 문제 해결

카카오톡 로그인 구현 시 계속 아래와 같은 오류가 떴다..!콘솔에서는위와 같이구현해 둔 UserAuthenticationEntryPoint에 Spring Security에서 인증되지 않은 요청이 보호된 리소스에 접근했기 때문이라고 한다!어떤 오류 일지 찾으면 여러 가지 해결방법을  써봤는데 1. cors 설정 변경@Bean CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowedOriginPatterns(List.of("*"));모든 Origin으로 변경해봤지만 -> 해결 X  2.JwtAu..

카테고리 없음 2025.04.04

로그인 시 404 not found 에러 해결

평소와 같이 폼 로그인 코드를 작성하고 포스트맨으로 확인하는데 404 not found 가 떴다..!인텔리제이에서는 에러가 뜨지 않아 하나하나 코드를 들여다보기 시작했다..! 기존과 변경되었다고 생각한 코드는 WebSecurityConfig 코드 기존에 쓰던 문법이 deprecated 되어 코드를 수정한 부분이 있었는데 의심되기 시작했다.! 문제 1.문제 1. JwtAuthenticationFilter가 적용되었지만,  Security의 필터체인에 등록되지 않은 상태!문제 2. Spring Security 5.7 버전 이상은 AuthenticationManager를 직접 가져오는 방식이 아닌 Bean으로 따로 등록해야 정상 동작   문제 3. JwtAuthenticationFilter가 /users/lo..

카테고리 없음 2025.04.02

물류 서비스 구조 분석 - 마켓컬리

마켓컬리 물류 서비스주요 기술 스택Java(Spring Boot)JPAGraphQLOracleAurora(MySQL)AWS MQ 서비스 구조이커머스 서비스이커머스 백엔드 시스템은 Legacy PHP와 PHP/Laravel과 Java/Spring Boot가 하이브리드 형태로 구성Legacy PHP는 회원, 상품, 주문, 결제등을 관리하고, 검색 및 데이터 기반 서비스는 Java/Spring Boot로 개발전체 이커머스 시스템은 Spring Cloud Netflix를 기반 물류 서비스물류 서비스는 크게 SCM, WMS, TMS으로 구성 Warehouse Management System은 서비스 형태 구조 고도화를 통하여 다양한 형태의 물류 창고 관련 운영 효율화를 수용가능하도록 개발하고 AWS MQ, JPA..

카테고리 없음 2024.12.16

[설계] 도서관 사이트 개발 - 요구사항 명세서

백엔드 개발에 필요한 기술을 적용하며 깊게 이해하기 위해 프로젝트를 시작..!주제는 평소에 책 읽을 때 많이 사용하는 교보문고 전자도서관을 주제로 잡아 분석하고 사용하면서 추가하고 싶었던 기능을 수정하며 구현하려고 합니다. 프로젝트를 시작하며 프로젝트의 목표와 범위를 구체적으로 정의하며 필수 기능과 부가기능 등의 개발 우선순위를작성하는 요구사항 명세서를 설계했습니다.요구사항 명세서를 통해 일정관리 및 프로젝트 관리 효율을 높이기 위해 자세하게 작성하려고 노력했습니다. 1. 요구사항 명세서 초안 작성 목표1. 사용자, 관리자 인터페이스 구현2. 전자책 대출/반납/예약 등 기능 구현3. 개인별 맞춤화 추천 구현4. 도서의 대출 예약 상태 변경 시 레디스 적용 기능 유저- 회원가입 및 로그인, 로그아웃 기능 ..

카테고리 없음 2024.12.16