목록개발Article (143)
밤빵's 개발일지
스프링 스케줄러(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문제도 포함이고, 최적화하는데 여러가지 방법이 있어서, 이걸 정리하는데 시간이 많이 걸렸다..! 개발일지를 작성하면서도 모르는게 아직도 많아서 어렵지만 이런게 있구나 하는 정도는 기억하면 좋지않을까? 성능 최적화는 애플리케이션의 반응 속도, 처리량, 리소스 사용률을 개선하여 사용자 경험을 향상시키는 중요한 과정이다. 개발자라면 성능 최적화는 시스템의 효율성을 높이고 서버 자원의 낭비를 줄이기 위해 필수적으로 고려해야 하는 부분이다. 😵💫성능 최적화란 무엇일까?성능 최적화는 애플리케이션의 전반적인 성능을 개선하기 위해 코드와 시스템 구조를 효율적으로 재구성하는 것을 의미한다. 이는 응답 시간을 줄이고, 처리..
로그인기능을 맡았을 때, Redis에 저장한다고 해서 생전 처음듣는거라 기능구현을 다른 팀원분이 해줬던 경험이 있다. 기능 구현을 하면서 많은 시간이 지났는데 구현해내지 못한게 가장컸고, Redis를 알지도 못 하니 당연한 결과였다. 다른 프로젝트에 참여하게 되서도 심심찮게 Redis가 들려서 며칠 Redis에 대해 틈틈이 공부하기 시작했다. Redis는 고성능의 인메모리 데이터 저장소로, 다양한 데이터 구조를 지원하는 NoSQL 데이터베이스이다. Redis는 Remote Dictionary Server의 약자로, 키-값(Key-Value) 저장소를 기반으로 빠른 읽기/쓰기 성능을 제공하며, 캐싱, 세션 저장소, 실시간 분석, 메시지 큐 등의 다양한 용도로 사용된다. 🫨Redis?Redis는 메모리 내..
원래는 기술매니저님이 말씀해주신 N+1문제해결에대해 개발일지를 쓰려고했는데, 예전 개발일지에서 몇번 본 얕게 아는 수준이라 아직은 정리하기에 부족해서 예전 조에 있던 멘토님이 지나가듯 말씀해주신 단위테스트에 대해서 먼저 작성하기로 했다! 단위 테스트(Unit Testing)는 소프트웨어 개발에서 코드의 작은 부분, "단위(Unit)"를 독립적으로 테스트하는 것을 의미한다. 일반적으로 이 단위는 메서드나 함수와 같은 작은 코드 조각을 말하며, 단위 테스트는 이러한 코드가 제대로 작동하는지를 검증하기 위해 수행된다. 단위 테스트는 초기 개발 단계에서 버그를 발견하고, 코드 변경 시 발생할 수 있는 문제를 조기에 파악할 수 있도록 도와준다.🤓단위 테스트(Unit Testing)?단위 테스트는 소프트웨어 개발..
Validation에 대해서 솔직히 잘 모르고있다가, 유효성 검사를 위해 @Valid를 사용하면서 그냥 이거만 쓰면 되는건가? 라는 망충한 생각을했기 때문에 공부가 필요했다. 요즘은 개발일지 쓰면서 반성을 많이하게 되는거 같은데, 대체 나는 강의를 어떻게 들었길래 기억이 잘 안나는지 모르겠다😢Validation(유효성 검사)은 소프트웨어 개발에서 사용자 입력을 검증하고, 잘못된 데이터가 시스템에 들어오는 것을 방지하기 위한 중요한 단계이다. 특히 웹 애플리케이션에서는 클라이언트에서 보내는 다양한 데이터의 형식과 내용을 검증하여 서버의 안정성을 유지하고, 보안을 강화하는 데 큰 역할을 한다. Spring Boot와 같은 프레임워크에서 Validation을 구현하는 방법과 핵심 개념에 대해 알아보고, 간단..
아티클에 대한 요구사항을 받았을 때 웹소켓에 대해 공부하면서 SSE에 대한 내용도 있었는데, 웹소켓에 머리가 어질어질해서 다음에 알아봐야지 했던 SSE. 사실 실시간 뉴스 피드는 알림같은 느낌이라 꼭 웹소켓이어야 할까? 라는 생각이 들긴 했지만 아직 GPT가 없으면 코드를 작성하는데 어려움을 겪는 나에게는 GPT의 추천을 따를 수 밖에..! 팀이 흩어지게되서 결국 그 기능을 구현해 볼 기회는 없었지만 알아 둘 필요를 느껴서 개발일지의 소재로 정했다. Server-Sent Events(SSE)는 웹 애플리케이션에서 서버가 클라이언트에게 실시간으로 데이터를 전송할 수 있게 해주는 기술이다. SSE는 단방향 통신 방식으로, 서버에서 클라이언트로만 데이터를 보낼 수 있고, HTML5에서 제공하는 표준 기술이다...
연관관계는 숙련주차 때 강의듣다가 긴 강의시간에 너무 지쳐서 흘려들었던거같다. 그리고 팀 프로젝트에 오니 연관관계를 심심치 않게 쓰고있다. 강의를 다시듣기엔 시간이 부족하고.. 어떤기능을 구현하게 될 진 몰라도 알아둬야 할 거같아서 미루고미루다 오늘 정리하기로 했다. 연관관계는 객체지향 프로그래밍에서 매우 중요한 개념 중 하나로, 데이터베이스 테이블 간의 관계를 객체 모델에서 어떻게 표현하고 관리할 것인지를 결정하는 것이다. 연관관계를 잘 이해하고 올바르게 설계하는 것은 애플리케이션의 성능과 유지보수성에 큰 영향을 미친다. 오늘 개발일지에서는 엔터티(Entity) 간의 연관관계에 대한 개념과 종류, 구현 방법, 그리고 코드 예시와 함께 이해한 내용을 정리해 보았다.😵💫엔터티 간의 연관관계란?연관관계..
레스트템플릿에 관한 강의를 주특기주차때도 그냥 인텔리제이 나눠사용하니까 서버가 두개? 이렇게만 이해하고 있었다. 7조에 합류하고 해야할게 너무 많은데 갈피는 안잡히고... 여기 프로젝트는 레포지토리가 두개로 나뉘어져있길래 레스트템플릿이 생각나서 오늘 개발일지 소재로 정했다. ( 깔끔한 방이 레스트템플릿인지는 모른다.)RestTemplate은 스프링에서 제공하는 HTTP 클라이언트로, RESTful 웹 서비스와의 상호작용을 쉽게 할 수 있도록 도와주는 도구이다. RestTemplate을 사용하면 외부 API와의 통신, JSON 데이터를 파싱하여 객체로 변환, 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등) 지원 등을 쉽게 처리할 수 있다.🤓RestTemplate이란?RestTempl..