Server (34) 썸네일형 리스트형 [Redis] 레디스를 활용한 Spring Boot 환경에서 캐싱 적용하기 [개발자를 위한 레디스] 1장 마이크로서비스 아키텍처와 레디스NoSQL의 등장 배경소프트웨어 아키텍처의 변화와, 이로 인해 현대의 데이터 저장소가 어떤 요구 사항에 직면했는지 알아본다. 모놀리틱 아키텍처전통적인 소프트웨어 개발 모델전체 애플리케이soso-hyeon.tistory.com [개발자를 위한 레디스] 5장 레디스를 캐시로 사용하기레디스와 캐시캐시란?캐시란 데이터의 원본보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소를 의미한다.사용자가 동일한 정보를 반복적으로 액세스할 때 원본이 아니라 캐시soso-hyeon.tistory.com 안녕하세요. 요즘은 레디스를 조금씩 공부하고 있는데, 최근 진행 중인 프로젝트에서 캐싱 작업을 추가할 일이 생겼어요.그래서 추가하고 그 과정을 기록으로.. [Docker] 도커 활용해서 Spring Boot 환경에서 CI/CD 파이프라인 구축하기 [Docker] jar 파일 도커(docker) 이미지로 배포하기 (with. Java, SpringBoot)Docker로 서버 배포하기진행하던 사이드 프로젝트에서 헥사고날 아키텍처를 도입하게 되었다. 그에 따라 멀티모듈로 싹 바꾸고 리팩토링 작업을 진행했다. 약 일주일 간의 작업 후 수정된 서버를soso-hyeon.tistory.com 안녕하세요!약 2달 전에 도커 이미지를 서버에 수동 배포하는 글을 작성했었는데요, 이번엔 배포를 자동화하는 CI/CD 파이프라인을 구축해보아서 그 과정을 기록하려고 해요. 해당 작업을 진행한 환경은 다음과 같아요.Java, Spring Boot (jar 파일 활용)Docker HubGithub ActionAWS EC2 Ubuntu 기존에 진행하던 프로젝트에 CI/CD 파.. [Docker] jar 파일 도커(docker) 이미지로 배포하기 (with. Java, SpringBoot) Docker로 서버 배포하기진행하던 사이드 프로젝트에서 헥사고날 아키텍처를 도입하게 되었다. 그에 따라 멀티모듈로 싹 바꾸고 리팩토링 작업을 진행했다. 약 일주일 간의 작업 후 수정된 서버를 재배포하려고 하니 배포에 실패하고 말았다..! EC2 용량 부족의 문제였다. 당황해서 EC2 불륨을 늘려보고 캐시를 지워보고 용량을 확보하기 위해 이것저것 해보았지만, 결국 안그래도 적은 용량을 늘려도 커진 jar 파일을 감당하기엔 무리였던 것 같다.. 하루 정도 텀을 두고 곰곰히 생각해보니 기존의 배포 방식은 jar 파일을 압축해서 AWS를 통해 올려 zip 파일을 ec2 서버 내에서 다시 풀고, 빌드된 jar 파일을 실행시키는 구조였다. 배포 파일 크기를 줄일 수 있는 방식이 없을까 고민하다가 도커 이미지를 떠올.. [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) 개념적으로 "서버"란 무엇일까? 여러 블로그 글들을 조금만 찾아봐도 서버는 클라이언트에게 네트워크를 통해 정보나 시스템을 제공하는 컴퓨터 시스템이라는 사.. 이전 1 2 3 4 5 다음