본문 바로가기

반응형
SMALL

Server

(26)
[개발자를 위한 레디스] 5장 레디스를 캐시로 사용하기 레디스와 캐시캐시란?캐시란 데이터의 원본보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소를 의미한다.사용자가 동일한 정보를 반복적으로 액세스할 때 원본이 아니라 캐시에서 데이터를 가지고 옴으로써 리소스를 줄일 수 있다.애플리케이션이 다음 조건을 만족시킨다면, 캐시를 도입했을 때 성능을 효과적으로 개선할 수 있다.원본 데이터 저장소에서 원하는 데이터를 찾기 위해 검색하는 시간이 오래 걸리거나, 매번 계산을 통해 데이터를 가져와야 한다.캐시에서 데이터를 가져오는 것이 원본 데이터 저장소 데이터를 요청하는 것보다 빨라야 한다.캐시에 저장된 데이터는 잘 변하지 않는 데이터다.캐시에 저장된 데이터는 자주 검색되는 데이터다. 캐시로서의 레디스레디스는 단순하게 키-값 형태로 저장하므로, 데이터를 저장하..
[Spring] Spring Boot에서 FCM으로 푸시알림 기능 구현하기 글을 시작하기 전에 이번 포스팅에서는 진행 중인 프로젝트에서 푸시알림을 전송하기 위한 API/기능을 구현했던 과정을 소개하려고 한다. 개발을 막 시작했을 즈음, 주변에서 푸시알림은 너무 어렵다는 말을 적지 않게 들어와서, 나도 모르게 긴장을 좀 하고 있었던 것 같다. 다른 몇몇 분들도 푸시알람은 어렵다는 생각을 하고 있을지도 모른다. 하지만 워낙 관련 자료들도 많고, 활용 서비스로 선택한 Firebase의 공식 문서도 잘 되어있으니, 일단 해보니 크게 어렵지 않았다. 그럼 이제 시작해보자! FCM 푸시알림을 전송하기 위해 FCM(Firebase Cloud Messaging) 서비스를 활용하기로 결정했다. 무료로 메시지를 전송할 수 있고, 많은 사용자들이 사용하고 있어 그 안정성이 보장되었을 거라 생각했기..
[Spring] Repository 테스트 코드 독립적으로 작성하기 글을 시작하기 전에 최근 Spring Boot에서 테스트 코드를 조금씩 연습해보고 있다. 일단 통합 테스트는 제외하고, 단위 테스트 위주로 작성하고 있다. Repository 테스트는 @DataJpaTest를 사용해서 진행하고 있는데, 불완전하게 독립적인 테스트 코드를 작성하여 각각 테스트에서는 성공하지만, 전체 테스트(build)에서는 실패하는 결과가 발생했다. 해결 과정을 글로 남겨보고자 한다. 문제 상황 3개의 Repository에 대해 테스트 코드를 작성하고 있다. 위 화면처럼 각각의 테스트는 성공한 결과이다. 하지만 build 같이, 전체적으로 테스트하는 과정에서는 실패한다. 왜??? 원인 분석 여러가지 시도와 몇몇 지인들에게서 얻은 조언, GPT와의 대화 등으로 인해 원인은 비교적 빨리 알아낼..
[Spring Boot] 멀티 모듈 구조(Multi Module Architecture) 적용기 글을 시작하기 전에 최근 멀티 모듈 구조를 도입했다. 아니 정확히 말하면 도입하는 중이다.. 1차적으로 분리와 리팩토링은 완료했으나, 구조를 100%로 이해한 건 아니라서 조금씩 공부하면서 개선점을 찾고 추가 적용해가고 있는 단계이다. 그래서 이 글을 쓸까말까도 좀 고민했다 🤔 잘못된 정보를 전달할 수도 있을까봐ㅠㅠ 하지만 실전과 기록이 최고의 학습법이라고 생각하는 사람으로서, 이런 생소한 개념은 기록으로 좀 남겨야 진짜 내 것이 되겠다!라는 생각도 들었다. 이제까지 설계한 과정을 기록하고, 이후로도 추가 적용할 때마다 해당 블로그 글을 조금씩 수정해나가려 한다. 하지만 또 잘못된 정보를 공유할 순 없기 때문에,, 참고한 레퍼런스들을 틈틈히 남겨둘테니, 한 분이라도 이 글을 참고하며 구조 설계를 도입하려..
[Spring] 스프링에서 Slack에 에러 로그 보내기 글을 시작하기 전에 자잘한 프로젝트까지 포함하여 2년 간 총 7번의 사이드 프로젝트를 경험하며 느낀 점 중 하나.. 로그 관리는 매우 중요하다. 특히 에러 로그! 물론 에러가 발생한 상황이야 직접 서버를 들어가 확인할 수도 있고, 에러가 발생했던 시나리오와 똑같이 재현해서 알아낼 수도 있다. 하지만 리소스가 너무너무 많이 들었다.. 최근 2주동안 초기 MVP 규모의 서비스 REST API를 빠르게 구현해야 할 일이 있었다. 이번에는 에러 로그를 수집해서 바로 대응할 수 있도록 하자. 하지만 트레이드 오프를 고려해서 가장 빠르게 설정할 수 있는 방법으로 선택하자. 라는 결론을 내리게 되었다. Slack 설정 및 연동 진행한 프로젝트는 Slack 서비스를 활용했다. 가장 빠르게 접근할 수 있는 협업 툴이었으..
[Server] 웹 서버 vs 웹 어플리케이션 서버(WAS) vs API 서버 글을 시작하기 전에 최근 2년 간의 서버 개발 경험을 개인적으로 정리하다가 여러가지 개념이 헷갈리기 시작했다. 내가 개발한 서버는 어떻게 불리고 있고, 각각의 개념은 또 어떻게 되며, 이게 정말 확실한 지? 새삼 프로젝트 경험은 많지만 내가 개발하고 있는 서버의 이름도 제대로 모르고 있었구나.. 그런 반성을 개인적으로 좀 하게 됐다. 개발자가 되고 싶으면 기본이 탄탄해야 한다고 생각한다. 내가 가지고 있는 지식들에 확신을 갖기 위해서 추가로 학습하고 이렇게 글로 남겨보고자 한다. 주저리주저리 서론이 길었다 ^.^ 진짜 글쓰기 시작! 서버 (Server) 개념적으로 "서버"란 무엇일까? 여러 블로그 글들을 조금만 찾아봐도 서버는 클라이언트에게 네트워크를 통해 정보나 시스템을 제공하는 컴퓨터 시스템이라는 사..
[우당탕탕 개발 일지] Spring Security 트러블 슈팅: AntPathRequestMatcher Error Log Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'filterChain' defined in class path resource [com/example/userservice/security/WebSecurity.class]: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'filterChain' threw exception with message: This method cannot decide whether these patterns are S..
[우당탕탕 개발일지] Spring Boot와 AWS S3을 이용하여 파일 업로드하기 안녕하세요. 아주 오랜만에 포스팅 글을 남겨보네요. 이번에 사이드 프로젝트를 진행하면서 이미지 업로드 API가 필요한 일이 생겨서 공부할 겸 글로 남겨봅니다. Spring Boot 버전은 3.x 버전이고, AWS 버킷에 파일을 업로드 한 후 파일의 공개 url을 가져오는 API 개발을 연습했어요. AWS S3 우선 AWS의 S3 서비스에서 버킷을 만들어주어야 합니다. 업로드한 파일을 public하게 접근할 수 있어야 하기 때문에 버킷을 생성할 때 퍼블랙 액세스 차단 설정만 해제해줍니다. 버킷을 생성했으면 정책 설정이 추가로 필요합니다. 버킷으로 들어가 권한 옵션의 버킷 정책에서 편집을 클릭해주세요. 그러면 위 이미지처럼 가장 오른쪽 버튼의 정책 생성기를 확인할 수 있는데 버튼 눌러주면 됩니다. Effec..

반응형
LIST