목록매일메일 (63)
종식당

캐시는 성능 향상과 부하 감소를 목표로 한다. 이때, 캐시를 사용하는 양상이 서비스에 큰 영향을 끼치기도 한다. 따라서, 캐싱 전략을 이해하는 것은 중요하다.🚟 Cache Aside(Lazy Loading) 방식Cache Aside방식은 캐시 히트 시 캐시에서 데이터를 불러오며, 캐시 미스 발생 시 원본 데이터베이스에서 조회하여 반환한다. 애플리케이션은 캐시 미스가 발생하면 해당 데이터를 캐시에 적재한다. 해당 방식은 실제 요청된 데이터만 캐시에 저장되므로 불필요한 데이터 캐싱을 줄일 수 있다. 또한 캐시에 문제가 발생해도 애플리케이션은 원본 데이터베이스에 직접 접근할 수 있기 때문에 서비스가 계속 작동할 수 있다는 장점이 있다. 하지만, 캐시 미스가 발생하는 경우에만 데이터를 캐시에 적재하기 때문에 ..

🐯 동시성(Concurrency)동시성이란 이름처럼 실제로 여러 작업을 동시에 수행하는 것이 아니라, 논리적으로 동시에 실행되는 것처럼 보이게 만드는 개념이다. 단일 코어를 기준으로 시간 분할을 통해 여러 스레드를 번갈아 가며 작업을 수행함으로써, 마치 동시에 여러 작업이 처리되는 것처럼 보이게 한다. 사용자의 입력을 기다리거나, 네트워크 요청, 파일 입출력 등의 I/O작업 시에는 CPU가 유휴 상태로 대기하게 된다. 유휴 상태는 컴퓨터나 프로그램이 실행 중이지만 작업이나 데이터를 적극적으로 처리하지 않는 상태를 말한다.이때, CPU가 아무 일도 하지 않고 대기하는 대신, 컨텍스트 스위칭을 통해 다른 스레드의 작업을 처리할 수 있다. 이러한 특성 덕분에 서버는 여러 클라이언트의 요청을 동시에 처리할 수..

🔩 로드 밸런싱로드 밸런싱이란 애플리케이션을 지원하는 리소스 풀에 들어오는 네트워크 트래픽(들어오는 요청)을 균등하게 분산하는 것을 의미한다. 이를 수행하는 로드 밸런서는 애플리케이션 서버 앞단에 위치하며 클라이언트 요청을 지시하고 제어한다. 이를 통해서 애플리케이션의 가용성, 확장성, 보안 및 성능을 확보할 수 있다. 🪶 로드 밸런싱 알고리즘라운드 로빈라운드 로빈 방식은 모든 요청이 순서대로 처리되는 방식이다. 서버가 3대(A, B, C)가 존재하면 요청은 ABCABC 순서대로 전달된다. 모든 서버의 처리 능력이 동등하고, 요청의 고른 분산이 중요한 경우 고려해 볼 수 있다. 구현이 쉬우며 고른 분산을 보장한다는 것이 장점이다. 하지만, 서버 부하나 응답 시간을 고려하지 않고 서버의 처리 능력이 다..

🍪 세션 불일치 문제다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우에는 세션 불일치 문제가 발생할 수 있다. 만약 서버 A, B를 관리하고 있을 때, 로드밸런서는 사용자의 요청을 상황에 맞게 A, B 중 한 곳으로 전달한다. 유효한 로그인 요청이 A서버로 처음 도착하면 사용자에 대한 세션 정보는 A서버에 저장된다. 이후에 해당 사용자의 또 다른 요청이 로드 밸런서에 도착했을 때, B서버로 도착하게 되면 사용자의 세션 데이터가 존재하지 않기 때문에 요청이 제대로 처리되지 않는다.🍩 세션 불일치 문제는 어떻게 해결할 수 있나요?스티키 세션 방식스티키 세션 방식은 사용자 요청이 항상 사용자 세션 정보가 저장된 서버로 가도록 고정하는 방식이다. 사용자 요청의 쿠키나 IP를 통해서 어는 서버로 고정 ..

🍱 SOLIDSOLID원칙은 객체지향 설계 5원칙이라고도 불리며, 각 원칙의 앞 글자를 따서 만들었다. 객체지향설계의 핵심 중 하나는 의존성을 관리하는 것이다. 의존성을 잘 관리하기 위해서는 SOLID원칙을 준수해야 한다.🥣 단일 책임 원칙 (Single Responsibility Principle)단일책임원칙은 클래스가 오직 하나의 목적이나 이유만으로 변경되어야 한다는 것을 강조한다. 여기서 책임이라 단순히 메서드의 개수를 뜻하지 않고 특정 사용자나 기능 요구사항에 따라 소프트웨어의 변경 요청을 처리하는 역할을 의미한다. 즉, 클래스는 한 가지 변화의 이유만 가져야 하며, 이를 통해 변경이 발생했을 때 다른 기능에 영향을 덜 미치도록 설계된다. 이렇게 하면 유지보수가 쉬워지고 코드가 더 이해하기 쉬..