목록분류 전체보기 (198)
밤빵's 개발일지
팀 프로젝트가 끝났다. 늦게 합류하기도 했고, 나는 기능적으로 한 게 없고, 프로젝트에 대해 많이 아는것도 없기때문에 그냥 같이 흐르는 중! 팀 프로젝트를 계속 진행 할 예정이라, 고급기능에 대해서 생각해야하는데 해보고싶은게 있어서 고민중이고, 전에 Redis를 다루면서 캐싱에 관련한 부분이 많아서 이번주 WIL 내용으로 쓰기로했다. Redis는 인메모리 데이터 저장소로, 고속의 읽기 및 쓰기 성능을 제공하여 캐싱과 세션 관리를 효과적으로 수행할 수 있다. Spring Boot와 Redis를 연동하여 애플리케이션의 성능을 최적화하고, 사용자 세션을 관리하는 방법을 이해하기위해 노력했다! 🫨Spring Boot와 Redis의 연동Spring Boot와 Redis를 연동하기 위해서는 Spring Data ..
다대다(Many-to-Many) 연관관계 매핑은 엔티티 간의 복잡한 관계를 설정할 때 자주 사용되는 기법이다. 지난 개발일지에서 연관관계를 기록한적있는데 그떈 내가 프로젝트에서 사용하는 어떤 두 관계에대해서만 중점적으로 다뤘기때문에 이번엔 Spring Boot와 Hibernate를 사용하여 다대다 연관관계를 매핑하는 방법에 대해 공부하고, 예제 코드를 통해 다대다 관계를 어떻게 구현할 수 있는지 예시와 함께 준비했다. 다대다 관계는 하나의 엔티티가 여러 개의 다른 엔티티와 연관될 수 있을 때 사용되며, 실무에서도 자주 사용되는 중요한 개념이다.🤓다대다(Many-to-Many) 연관관계란?다대다(Many-to-Many) 연관관계는 두 엔티티 간의 관계에서 하나의 엔티티가 여러 개의 다른 엔티티와 연관되고..
JMeter와 N+1 문제의 관계는 성능 테스트와 데이터베이스 쿼리 최적화라는 두 가지 관점에서 중요한 이슈이다. N+1 문제는 데이터베이스 쿼리 성능을 저하시키는 일반적인 문제 중 하나로, 많은 쿼리를 불필요하게 발생시키는 원인이다. 반면, JMeter는 애플리케이션의 성능을 테스트하는 도구로, N+1 문제가 성능에 어떤 영향을 미치는지를 명확하게 파악할 수 있게 해준다.🤓JMeter와 N+1 문제JMeter는 Apache Software Foundation에서 제공하는 오픈 소스 소프트웨어로, 웹 애플리케이션의 성능 테스트와 부하 테스트를 수행할 수 있는 도구이다. 주로 HTTP 요청을 시뮬레이션하여 애플리케이션이 다양한 트래픽 상황에서 어떻게 동작하는지를 측정한다. 반면, N+1 문제는 객체-관계..
스프링 스케줄러(Spring Scheduler)는 백엔드 애플리케이션에서 중요한 작업들을 특정 시간에 자동으로 실행되도록 스케줄링하는 데 사용된다. 예를 들어, 이메일 발송, 데이터베이스 백업, 통계 데이터 갱신, 정산 작업 등 정기적인 작업을 스케줄러를 통해 처리할 수 있다. 🤓스프링 스케줄러(Spring Scheduler)란?스프링 스케줄러(Spring Scheduler)는 스프링 프레임워크에서 제공하는 스케줄링 기능으로, 백그라운드 작업을 특정 시간 간격으로 실행할 수 있게 해주는 기능이다. 이는 자바의 java.util.concurrent 패키지의 스케줄링 기능을 바탕으로 하며, 스프링이 이를 더욱 간편하게 사용할 수 있도록 지원한다. 스케줄러는 주로 백그라운드 작업을 처리하거나 주기적으로 실행..
N+1문제는 예전에 개발일지에 여러번 간략하게 다뤘던 내용이였는데, 잘 알지는 못하고 매니저님이 이 문제를 해결해보는게 좋은 경험이 될거라고하셔서 며칠 열심히 알아봤는데, 항상 그렇듯 개념은 알고있을 수 있어도, 이걸 적용해서 문제를 해결한다거나 하는건 나에게 어려운 일이다. 그래서 다른 기술매니저님께 이걸 이해하고싶다고 말씀드렸더니 일단 억지로 문제를 발생시키면 알수있을거라고 하셔서 억지로 문제를 발생시켜보긴 했다..! N+1 문제는 데이터베이스 쿼리 최적화와 관련하여 자주 언급되는 문제로, 특히 JPA를 사용하는 애플리케이션에서 많이 발생한다. N+1 문제는 의도치 않게 많은 수의 SQL 쿼리가 실행되는 문제를 의미하며, 이는 애플리케이션 성능을 크게 저하시킬 수 있다. 🤓N+1 문제해결N+1 문제..
Nginx는 선용멘토님이 서버 다운되지 않고 유지될 수 있는 항상성에 대해 말씀하셨던적이 있는데 로드밸런서에 대해 공부하면서 Nginx를 알게되었고, 예전 프로젝트에서 디스코드를 클론코딩한 깃의 아키텍처에서도 Nginx가 있어서 공부를 하게 됐다. 로드밸런서 역할 뿐 아니라 많은 역할을 하기때문에 알아두면 좋을것같다는 생각을 했다. Nginx는 웹 서버, 리버스 프록시, 로드 밸런서, HTTP 캐시로 사용되는 다목적 웹 서버 소프트웨어이다. 고성능과 고가용성을 제공하는 Nginx는 현대적인 웹 애플리케이션의 요구 사항을 충족시키기 위해 설계되었다. 이 글에서는 Nginx의 개념과 주요 기능, Nginx를 활용한 서버 가용성 유지와 로드 밸런싱, 그리고 Nginx와 스케줄러를 분리한 배치 서버 아키텍처에..
성능최적화에 대해서 알아두라는 말을 들어서 바로 알아보기 시작했다. 지금 숙제?처럼 받은 N+1문제도 포함이고, 최적화하는데 여러가지 방법이 있어서, 이걸 정리하는데 시간이 많이 걸렸다..! 개발일지를 작성하면서도 모르는게 아직도 많아서 어렵지만 이런게 있구나 하는 정도는 기억하면 좋지않을까? 성능 최적화는 애플리케이션의 반응 속도, 처리량, 리소스 사용률을 개선하여 사용자 경험을 향상시키는 중요한 과정이다. 개발자라면 성능 최적화는 시스템의 효율성을 높이고 서버 자원의 낭비를 줄이기 위해 필수적으로 고려해야 하는 부분이다. 😵💫성능 최적화란 무엇일까?성능 최적화는 애플리케이션의 전반적인 성능을 개선하기 위해 코드와 시스템 구조를 효율적으로 재구성하는 것을 의미한다. 이는 응답 시간을 줄이고, 처리..
"상태 : 채팅방의 내용등 변수로써 가지고 있으면 안되는 것......?" 서버가 상태를 가지고 있다면 각 서버간 상호작용을 할 수 없게 된다. 서버는 고정적인 게 아니라 변동적인것 이기 때문이다. ( 서버 이용 상황에 따라 늘리고 줄이고 하기때문에 ) 이런 이유로 SSE에도 상태를 가지고 있으면 안된다. 김선용 멘토님이 말씀하신 " 서버가 상태를 가지고 있으면 안된다 " 는 서버가 클라이언트의 상태 정보를 직접 저장하거나 유지하지 않는 것이 좋다는 것을 의미한다. 이 원칙은 서버 아키텍처의 확장성과 안전성을 보장하기 위한 중요한 개념으로 여기서 상태(State)란 예를들어 채팅방의 내용, 로그인 세션, 사용자 별 설정 등 클라이언트와의 상호작용에 따라 달라지는 데이터를 말한다. 이 원칙이 중요한 이..
로그인기능을 맡았을 때, Redis에 저장한다고 해서 생전 처음듣는거라 기능구현을 다른 팀원분이 해줬던 경험이 있다. 기능 구현을 하면서 많은 시간이 지났는데 구현해내지 못한게 가장컸고, Redis를 알지도 못 하니 당연한 결과였다. 다른 프로젝트에 참여하게 되서도 심심찮게 Redis가 들려서 며칠 Redis에 대해 틈틈이 공부하기 시작했다. Redis는 고성능의 인메모리 데이터 저장소로, 다양한 데이터 구조를 지원하는 NoSQL 데이터베이스이다. Redis는 Remote Dictionary Server의 약자로, 키-값(Key-Value) 저장소를 기반으로 빠른 읽기/쓰기 성능을 제공하며, 캐싱, 세션 저장소, 실시간 분석, 메시지 큐 등의 다양한 용도로 사용된다. 🫨Redis?Redis는 메모리 내..
원래는 기술매니저님이 말씀해주신 N+1문제해결에대해 개발일지를 쓰려고했는데, 예전 개발일지에서 몇번 본 얕게 아는 수준이라 아직은 정리하기에 부족해서 예전 조에 있던 멘토님이 지나가듯 말씀해주신 단위테스트에 대해서 먼저 작성하기로 했다! 단위 테스트(Unit Testing)는 소프트웨어 개발에서 코드의 작은 부분, "단위(Unit)"를 독립적으로 테스트하는 것을 의미한다. 일반적으로 이 단위는 메서드나 함수와 같은 작은 코드 조각을 말하며, 단위 테스트는 이러한 코드가 제대로 작동하는지를 검증하기 위해 수행된다. 단위 테스트는 초기 개발 단계에서 버그를 발견하고, 코드 변경 시 발생할 수 있는 문제를 조기에 파악할 수 있도록 도와준다.🤓단위 테스트(Unit Testing)?단위 테스트는 소프트웨어 개발..