2024/07 21

[NEXT.JS] Zustand

개요Zustand는 간단하면서도 강력한 상태 관리 라이브러리입니다. React 애플리케이션에서 전역 상태를 쉽게 관리할 수 있게 해주며, Redux와 비교했을 때 훨씬 더 간단하고 직관적인 API를 제공합니다.Zustand는 독일어로 "상태"를 의미하며, React의 Hooks를 기반으로 합니다.  특징간단한 APIZustand는 매우 간단한 API를 제공하여, 몇 줄의 코드만으로 상태를 정의하고 사용할 수 있습니다.이는 Redux와 같은 복잡한 설정 없이도 쉽게 상태 관리를 할 수 있게 해줍니다.import create from 'zustand';const useStore = create(set => ({ count: 0, increment: () => set(state => ({ count: st..

[NEXT.JS] SWR

개요SWR(Stale-While-Revalidate)은 React Hooks를 사용하여 데이터 가져오기와 캐싱을 간단하게 만들어주는 라이브러리입니다. Next.js와 함께 사용하면 매우 효율적인 데이터 페칭을 구현할 수 있습니다. SWR은 Vercel에서 개발한 라이브러리로, 최신 데이터 페칭 전략을 제공합니다.  특징자동 캐싱 및 재검증 (Stale-While-Revalidate)SWR의 이름에서 알 수 있듯이, 데이터가 오래되었는지 여부에 따라 자동으로 데이터를 캐싱하고, 백그라운드에서 재검증합니다.이는 데이터의 신선도를 유지하면서 빠른 응답을 제공합니다.import useSWR from 'swr';import axios from 'axios';const fetcher = url => axios.ge..

[NEXT.JS] Axios

개요Axios는 HTTP 클라이언트 라이브러리로, 브라우저와 Node.js 환경에서 모두 사용할 수 있는 도구입니다. 주로 비동기 HTTP 요청을 쉽게 관리하고 처리하는 데 사용됩니다.  특징Promise 기반Axios는 Promise API를 사용하여 비동기 요청을 처리합니다.이를 통해 콜백 헬(callback hell)을 피하고, 비동기 코드를 더 읽기 쉽게 작성할 수 있습니다.axios.get('/api/data') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); 인터셉터 (Interceptors)요청(request) 또는 응답(response)이 처리되기 전에..

[NEXT.JS] Express.js

개요Express.js는 Node.js를 위한 간결하고 유연한 웹 애플리케이션 프레임워크로, 특히 웹 서버와 API를 개발하는 데 널리 사용됩니다. Express는 미들웨어와 라우팅 기능을 제공하며, Node.js의 기능을 확장하고 개발자가 웹 애플리케이션을 더 쉽게 구축할 수 있도록 돕습니다.  특징간결함과 유연성- Express는 매우 가볍고 간결한 프레임워크로, 필요한 기능만 포함하고 있어 사용자가 원하는 대로 확장하고 맞춤화할 수 있습니다.- 프레임워크가 복잡하지 않아 학습 곡선이 비교적 낮습니다. 미들웨어Express의 핵심 개념 중 하나는 미들웨어입니다. 미들웨어는 요청과 응답 객체를 통해 각기 다른 작업을 수행하는 함수의 연속입니다.다양한 서드파티 미들웨어를 사용할 수 있으며, 필요에 따라 ..

[JAVA] Exception Handling

개요Java에서 예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 관리하고, 프로그램의 비정상적인 종료를 방지하는 중요한 기능입니다. 예외 처리를 통해 프로그램이 오류 상황에서도 적절하게 대응할 수 있도록 합니다.  기본 개념 예외(Exception) - 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류.예외 처리(Exception Handling) - 예외 발생 시 적절한 대응을 하여 프로그램의 정상적인 흐름을 유지하는 방법.   예외의 종류 Checked Exception - 컴파일 시점에서 예외 발생 가능성을 검사하며, 반드시 처리해야 합니다. 예: IOException, SQLException.Unchecked Exception - 런타임 시점에서 예외 발생 가능성을 검사하며, 선택적으로..

[SPRING] Sleuth

개요Spring Cloud Sleuth는 분산 시스템에서 트랜잭션을 추적하고, 각 서비스 간의 요청을 모니터링하는 도구입니다. Sleuth는 각 서비스 호출에 고유한 트레이스 ID와 스팬 ID를 추가하여 분산 추적을 가능하게 합니다. 이를 통해 개발자는 서비스 간의 호출 관계와 성능 병목 현상을 쉽게 파악할 수 있습니다 주요 기능분산 추적 - 트랜잭션을 추적하여 서비스 간의 호출 관계를 시각화합니다.트레이스 ID와 스팬 ID - 각 요청에 고유한 식별자를 추가하여 추적을 용이하게 합니다.Zipkin 통합 - Zipkin과 통합하여 추적 정보를 시각화하고 분석할 수 있습니다.  설정build.gradle// https://mvnrepository.com/artifact/org.springframework...

[SPRING] Hystrix

개요Hystrix는 Netflix가 개발한 라이브러리로, 분산 시스템에서 서킷 브레이커 패턴을 구현하여 시스템의 복원력을 높입니다. Hystrix는 마이크로서비스 간의 의존성에서 발생할 수 있는 장애 전파를 방지하고, 서비스가 실패할 때 적절한 대처를 가능하게 합니다. 주요 기능서킷 브레이커 - 실패한 서비스 호출을 감지하고, 장애가 전파되지 않도록 차단합니다.폴백 메커니즘 - 서비스 호출이 실패할 경우 대체 로직을 실행합니다.실시간 모니터링 - 서비스 호출의 성공, 실패, 시간 초과 등의 지표를 모니터링합니다.  설정HystrixDemoApplication.javapackage com.example.hystrixdemo;import org.springframework.boot.SpringApplicat..

[SPRING] 유레카(Eureka)

개요Eureka는 Netflix가 개발한 서비스 등록 및 발견 도구로, 마이크로서비스 아키텍처에서 서비스 인스턴스들을 등록하고, 이들을 다른 서비스들이 발견할 수 있도록 돕는 역할을 합니다. 주로 클라우드 환경에서 동적으로 변하는 서비스 인스턴스들을 관리하는 데 유용합니다. 주요 기능서비스 등록 - 각 서비스 인스턴스는 Eureka 서버에 자신을 등록합니다.서비스 발견 - 클라이언트는 Eureka 서버를 통해 필요한 서비스의 위치를 동적으로 조회할 수 있습니다.헬스 체크 - 등록된 서비스의 상태를 주기적으로 확인하여 가용성을 보장합니다.  설정EurekaServerApplication.javapackage com.example.eurekaserver;import org.springframework.boo..

[SPRING BOOT] 스프링 클라우드(Spring Cloud)

개요Spring Cloud는 분산 시스템 개발에 필요한 구성 관리, 서비스 등록 및 발견, 라우팅, 로드 밸런싱, 서킷 브레이커, 분산 메시징 등의 기능을 제공합니다. Spring Cloud는 마이크로서비스 아키텍처를 위한 다양한 도구와 기능을 제공하여 애플리케이션 개발과 운영을 단순화합니다.  구성 요소 Spring Cloud Config : 분산 시스템을 위한 중앙 집중식 구성 관리 도구입니다.Spring Cloud Netflix : 넷플릭스 OSS 도구를 Spring Boot와 통합합니다. Eureka, Hystrix, Ribbon, Zuul 등이 포함됩니다.Spring Cloud Gateway : API 게이트웨이로, 라우팅과 필터링 기능을 제공합니다.Spring Cloud Sleuth : 분산 ..

[SPRING BOOT] DevTools

개요Spring Boot DevTools는 개발 속도를 높이기 위해 제공되는 도구 모음입니다. 이 가이드는 DevTools의 주요 기능과 사용법을 설명합니다.  의존성 추가Spring Boot DevTools 의존성을 추가합니다. build.gradleimplementation 'org.springframework.boot:spring-boot-devtools'  주요 기능자동 재시작: 코드를 변경하면 애플리케이션이 자동으로 재시작됩니다.라이브 리로드: HTML 파일을 변경하면 브라우저가 자동으로 새로고침됩니다.설정 속성- 개발 모드: spring.devtools.restart.enabled=true (기본값)- 라이브 리로드: spring.devtools.livereload.enabled=true (기..