Comdolidol-i

전통적인 자바 스레드 서버 애플리케이션에서 동시성 처리를 위해 스레드를 사용하는 것은 오랜 전통이었습니다. 예를 들어 스프링 프레임워크는 여러 요청을 처리하기 위해 멀티 스레드 모델을 채택한 프레임 워크입니다. 보통은 각 요청을 처리하는 데 하나의 스레드를 할당하는 방식으로 작동됩니다. 그러나 이 방식은 요청이 많아질수록 문제가 발생하게 됩니다.  과거에는 운영 체제 스레드의 제약으로 인해 동시 요청에 대응하기 위해 스레드 수를 늘리는 것이 어려웠습니다. 이는 스레드가 비용이 높고, 시스템에 사용 가능한 스레드 수가 제한되기 때문이죠. 또한 자바의 스레드는 운영 체제 스레드의 Wrapper로 동작하기 때문에 I/O 작업을 만나면 블로킹되어 다른 작업을 수행할 수 없는 경우가 발생합니다. 예를 들어 스프링..
[Docker] 도커 엔진(Docker Engine)에 대해서 - 컴도리돌이회사에서 이제 카프카(kafka), 도커(docker), 엘라스티서치(elk), 등을 도입 얘기가 나오는데, 나는 아무것도 모릅니다. 😓 오늘은 도커 엔진에 대해 포스팅을 해볼 생각입니다. 아는 게 많고 해 봤던comdolidol-i.tistory.com Install Docker Desktop on MacInstall Docker for Mac to get started. This guide covers system requirements, where to download, and instructions on how to install and update.docs.docker.com 이전 포스팅에서 도커 엔진이 어떻게 구성되어..
회사에서 이제 카프카(kafka), 도커(docker), 엘라스티서치(elk), 등을 도입 얘기가 나오는데, 나는 아무것도 모릅니다. 😓 오늘은 도커 엔진에 대해 포스팅을 해볼 생각입니다. 아는 게 많고 해 봤던 것이 많은 개발자가 얼른 되고 싶네요 😭😭 도커(Docker)도커는 클라이언트-서버 모델을 구현한 애플리케이션입니다.  도커 엔진은 도커 컴포넌트(Docker Componets)와 서비스를 제공하는 컨테이너를 구축하고 실행하는 기본 핵심 소프트웨어이에요.  Docker Demon, Docker Client, Docker image, Docker Container, Docker Registry로 주요 구성되어 있으며, 개발자가 흔히 도커라고 할 때, 주로 Docker Engjine을 의미합니..
사용자의 요청을 받고, 요청을 전달할 때 저는 대게 다음과 같이 HashMap을 사용합니다😓 @GetMapping("/") public String main(@RequestParam HashMap reqMap) { ... } 물론 위와 같이 사용하는 건 굳이 좋은 방식이 아닙니다. 필요한 값만 정의한 DTO 클래스를 사용하는 것이 일반적으로는 훨씬 더더더 좋죠 😊 하지만 개발하다 보면 필요했던 값이 필요하지 않아 지고, 생각하지 않은 값이 필요하게 되는 상황이 대게 많기 때문에 저는 HashMap을 사용합니다. 😔 (시간이 부족해...) 그런데 이렇게 자주 사용한 HashMap이 사실 어떻게 작용하는지 알지 못합니다. 물론 알지 못해도 지금까지 잘 사용했지만, 그래도 알고 사용하는 것과 무지로 사용하는 ..
· DevOps/AWS
기존 메인 서버에 사용했던 레디스를, 다른 서버에서 관리하는 로직을 개발하려고 했습니다. 당연히 메인 서버에서 설정한 레디스 설정을 그대로 사용하여, 필요한 기능을 구축했습니다. 개발 완료 후에 선임 개발자에게 "메인 서버와 같은 동일한 설정을 하면 과연 작동할까요? 작동하지 않을까요? 각각의 이유를 생각하면 좋겠어요."라는 질문을 받았습니다. 🫥🫥 질문은 오늘 포스팅할 "VPC, subnet 및 보안 그룹에 대한 개념을 갖고 있나요?"라는 의도였고, 저는 당당히 몰랐습니다. 😎 그래서 이번 기회가 아니면, 한 동안 다시는 공부하지 않을 저를 알기에,, 😊 하나부터 열까지 내용을 차근차근 적어 내려가면서 스터디를 할 생각이에요. VPC는 아마존에서 제공하는 가상 네트워크 서비스로, 가상 네트워크에서 리소..
이전 포스팅에서 Redis 설정하는 방법과 그 안에서 사용한 메서드에 대해서 가볍게 포스팅을 해봤습니다. 이번에는 설정한 CacheManager을 통해서 스프링에서 캐싱을 어떻게 사용하는지 알아보려고 해요 😊 @Cacheable 캐싱은 많은 애플리케이션에서 성능을 향상하는 핵심적인 기술 중 하나이며, 그중에서도 스프링 프레임워크에서는 @Cacheable 어노테이션을 통해 메서드 호출의 결과를 캐싱하는 기능을 제공합니다. 이를 통해 반복적인 계산을 피하고 응답 시간을 줄일 수 있게 됩니다. @Cacheable는 메서드의 특정 인자에 대한 결과 값을 캐시저장소에 저장하고 같은 인자에 대한 결과 값을 메서드를 실행하지 않고 캐싱 저장소에서 가져와 반환을 해줍니다. @Service public class MyS..
레디스 설정부터, 레디스 조회/ 추가/ 삭제 등에 대한 깊게 다뤄보려고 합니다. 올해 자바 버전 업과 스프링 버전 업을 했기 때문에 다시 레디스 설정에 대해 다시 정비하는 시간을 가지려고 합니다. 겸사겸사 설정한 코드에 대한 깊게 분석할 시간을 가지려고 합니다. 😊 레디스는 메모리 기반의 데이터 저장소로서, 캐싱, 세션 관리 등 다양한 용도로 사용되는데, 저는 스프링 부트를 사용하며 레디스는 대게 캐시 매니저나 세션을 저장을 할 때 활용되고 있어요. 스프링 부트에서는 레디스를 간편하게 설정하고 사용할 수 있는데, properties 또는 yml 파일에서 redis 호스트, 포트, 타입 등을 간단하게 설정할 수 있어요. 저는 properties 파일을 사용하기 때문에 다음과 같이 설정을 했습니다 🙄 spr..
퍼사드 패턴(Facade Pattern)퍼사드(Facade)는 건물의 정면을 의미해요. 건물 내부의 복잡함을 숨기고 건물의 정면만을 나타나게 합니다. 유저들은 건물의 정면에 있는 출입구를 통해 내부를 이용하게 됩니다. 즉, 건물의 정면이 마치 인터페이스가 되는 것이죠.🤔 시스템의 복잡한 부분을 감추고 사용자에게 단순한 인터페이스를 제공하는 개념이에요. 건물의 정면이 마치 출입구가 되어 건물 내부로 들어가는 것처럼, 사용자가 시스템의 내부 동작을 몰라도 간단한 인터페이스를 통해 시스템을 사용할 수 있게 해 줍니다. 온라인 쇼핑몰을 예를 들어 다음 퍼사드 패턴에 대해서 설명해 볼게요 😊 퍼사드 패턴 적용 예시(Facade Pattern Example)사용자는 제품을 검색하고 구매할 수 있지만, 그 내부에서는..
행복한쿼콰
'분류 전체보기' 카테고리의 글 목록