목록전체 글 (6)
유비무환
docker desktop 설치 과정에서 아래와 같은 에러를 보게 되어서 해결 방안을 찾아서 남겨놓는다. 시스템 구성(서비스)에서 'power' 체크박스를 해제하라는 방법이 제일 많이 나왔지만 필자는 해당 방법으로 해결되지 않아서 이 글에는 포함하지 않았다. 에러 내용 Component CommunityInstaller.ServiceAction failed: Failed to start service: 서비스가 시작이나 제어 요청에 빠르게 응답하지 않았습니다 해결 방안 레지스트리 편집기 열기(작업표시줄 검색창에 'regedit' 입력) 왼쪽 경로에 접근 -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control 오른쪽 화면에서 ServicesPipeTimeout 항..
Docker Config, Secret 란? config 나 secret 은 스웜 서비스에서 사용 가능한 방식으로 이미지나 컨테이너 외부에 파일을 저장하는 방식을 의미합니다. 두 방식 모두 서비스에 자유롭게 추가하거나 제거할 수 있습니다. 스웜에 config 나 secret을 추가하게 되면 도커가 TLS 연결을 통해서 해당 파일을 스웜 관리자에게 보냅니다. 이렇게 보내진 파일을 Raft 로그에 저장되고, 해당 로그는 암호화됩니다. ※ Raft 알고리즘 : 분산 시스템 내에서 합의 과정 중에 발생할 수 있는 문제를 해결하기 위한 알고리즘의 한 종류 Config config는 레지스트리나 구성 파일과 같이 암호화가 필요하지 않은 정보를 저장하는 방식을 의미합니다. // config 생성 echo "This ..
도커란? 애플리케이션을 개발, 배송, 실행하기 위한 오픈 플랫폼을 의미합니다. 제목에서와 같이 네트워크에 중점을 둔 글이기 때문에 도커에 대한 설명은 넘어가고 바로 네트워크를 살펴보도록 하겠습니다. 도커 문서를 살펴보면 네트워크의 종류가 다음과 같이 나와있습니다. 도커 네트워크 bridge : 기본 네트워크 드라이버. 일반적으로 통신이 필요한 독립 실행형 컨테이너에서 애플리케이션을 실행할 때 사용됩니다. host : 독립형 컨테이너의 경우 컨테이너와 호스트 간의 네트워크 격리를 제거하고 호스트의 네트워크를 직접 사용합니다. overlay : 여러 도커 데몬을 함께 연결하고 스웜 서비스가 서로 통신할 수 있도록 합니다. macvlan : 컨테이너에 MAC 주소를 할당하여 네트워크에서 물리적 장치로 표시할 ..
스프링 부트로 만들고 있는 개인 프로젝트에 로그인 기능이 필요해서 개발을 진행했습니다. 로그인 기능을 개발한 이유는 특정 기능을 사용하기 위해선 회원 정보가 필요하기 때문입니다. 로그인을 한 이후에 고객은 자유롭게 애플리케이션을 이용할 수 있습니다. 만약 사이트를 이용하는 고객 입장에서 어떤 작업을 할 때마다 로그인을 반복해서 해야 한다면 더 이상 사이트를 이용하고 싶지 않을 겁니다. 이럴 때 세션을 통해 서버가 로그인 정보를 가지고 있음으로써 고객은 한 번의 로그인으로 사이트를 자유롭게 이용할 수 있게 됩니다. 물론 세션이 만료되기 전까지만요. 세션 불일치 지금까지 한 대의 서버에서 세션을 사용한 경우를 생각해봤다면 지금부터는 여러 대의 서버에서 세션을 사용할 경우를 생각해봐야 합니다. 클라이언트와 서..
개인 프로젝트를 진행하면서 서비스 이용을 위해서 로그인 기능을 추가하게 되었습니다. 주로 비즈니스 로직에 로그인 기능을 사용하게 되는데 예를 들면 '물건을 장바구니에 넣는다'는 행위가 있겠네요. 물론 비회원으로 서비스를 제공하는 사이트도 있겠지만 여기서는 논외로 하겠습니다. 로그인 기능은 고객뿐만 아니라 관리자도 자주 그리고 반복해서 사용하게 되는 기능입니다. 그렇다면 이렇게 중복해서 사용되는 기능을 어떻게 제거할 수 있을까요? 지금부터 단계별로 알아보도록 하겠습니다. 기본 로직 >> CartController.java(리펙토링 전) @PostMapping public HttpStatus create(@RequestBody CartItem cartItem, HttpSession session) { Str..
전략 패턴은 디자인 패턴의 한 종류로 '스프링 입문을 위한 자바 객체 지향의 원리와 이해' 서적에서는 디자인 패턴의 꽃이라고 말할 정도로 중요한 패턴 중 하나입니다. 전략 패턴은 3가지 요소로 구성됩니다. 전략 메서드를 가진 전략 객체 전략 객체를 사용하는 콘텍스트 전략 객체를 생성해 콘텍스트에 주입하는 클라이언트 즉, 클라이언트가 여러 가지 전략들 중 하나를 선택해서 콘텍스트에 주입하는 방식입니다. 개인 프로젝트를 진행하면서 겪었던 문제를 해결하는 과정에서 전략 패턴을 적용했던 사례를 소개하고자 합니다. 결제 인터페이스 구현 최근 결제 방법이 카드, 휴대폰, OO페이 등 굉장히 다양해지면서 코드를 작성할 때 확장성에 대한 고민이 생겼고 '어떻게 확장성을 높일 수 있는지'에 대한 질문이 따라 나왔습니다...