📌 Docker`Docker`는 어플리케이션을 쉽게 만들고 테스트하고 배포할 수 있게 도와주는 소프트웨어 플랫폼을 말한다.어플리케이션을 `컨테이너`라는 가볍고 이식성 있는 `패키지`로 실행할 수 있다.`Docker 이미지`는 어플리케이션 실행을 위한 모든 것을 포함한다. Docker의 주요 특징 `컨테이너화` `경량` `이식성` `확장성` `이미지` 어플리케이션 실행에 필요한 파일을 포함한 읽기 전용 템플릿`컨테이너` 실행중인 이미지 인스턴스`Dockerfile` 이미지를 생성하기 위한 명령어가 담긴 스크립트 파일`볼륨` 컨테이너 데이터를 지속적으로 저장하는 메커니즘`네트워크` 컨테이너 간 통신을 관리하는 방식 정리하자면 로컬에서 `Dockerfile`을 통해 `이미지`를 생성하고 이미지를 실행하면 `..
전체 글
공부한 것 기록합니다빗물https://www.acmicpc.net/problem/14719
array = input()tmp = 1answer = 0stack = []for i in range(len(array)): if array[i] == "(": stack.append(array[i]) tmp = tmp * 2 elif array[i] == "[": stack.append(array[i]) tmp = tmp * 3 elif array[i] == ")": if not stack or stack[-1] == "[": answer = 0 break if array[i-1] == "(": # 제일 안쪽 괄호인 경우 더해주기 answer = answ..
MSA는 각 서비스가 독립적으로 배포되기 통신되므로 보안이 매우 중요하다.데이터 보호, 인증 및 권한 부여 등을 통해 시스템의 보안성을 확보해야 한다. 📌 OAuth2 `OAuth2`는 `토큰 기반`의 인증 및 권한 부여 프로토콜이다.클라이언트 어플리케이션이 리소스 소유자의 권한을 얻어 리소스에 접근할 수 있도록 한다. 📌 JWT`JWT` (Json Web Token)은 JSON 형식의 자가 포함 토큰으로, 클레임을 포함하여 사용자에 대한 정보를 전달한다.JWT는 헤더, 페이로드, 서명으로 구성되고 암호화를 통해 데이터의 무결성과 출처를 보장한다. `JWT`의 주요 특징으로는 자가 포함, 간결성, 서명 및 암호화가 있다.자가 포함 토큰으로 토큰 자체에 모든 정보를 포함하고 있어 별도의 상태 저장이 필..
📌 API 게이트웨이`API 게이트웨이`는 클라이언트의 요청을 받아 다양한 백엔드 서비스로 라우팅하고 다양한 부가 기능을 제공하는 중간 서버이다.즉 클라이언트 요청을 받아 적절한 서비스로 전달하는 역할을 수행한다. 그 외에도 인증 및 권한 부여, 로드 밸런싱, 모니터링 및 로깅 등의 기능을 수행한다. 📌 Spring Cloud Gateway`Spring Cloud Gateway`란 Spring 프로젝트의 일환으로 개발된 API 게이트웨이로 MSA 아키텍처에서 널리 사용된다.동적 라우팅, 필터링, 모니터링, 보안 등의 기능을 제공한다. `Spring Cloud Gateway`를 사용하려면 관련 의존성을 추가해야 한다.dependencies { implementation 'org.springfram..
📌 서킷 브레이커`서킷 브레이커`란 MSA 간 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴이다.외부 서비스 호출 실패 시 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 한다.상태 변화는 Closed -> Open -> Half Open 순으로 변화한다. 📌 Resilience4j`Resilience4j`는 서킷 브레이커 라이브러리이다.다양한 서킷 브레이커 기능을 제공한다!`Fallback` 메서드를 통해 호출 실패 시 대체 로직을 제공하여 시스템 안정성을 확보한다.또한 서킷 브레이커 상태를 모니터링하고 관리할 수 있는 다양한 모니터링 도구를 제공한다. `Resilience4j`를 사용하려면 gradle 의존성을 추가해야 한다.dependencies { impleme..
이번에는 FiegnClient와 Ribbon (로드 밸런싱) 내용에 대해 정리하려고 한다. 📌 로드 밸런싱`로드 밸런싱`이란 네트워크 트래픽을 여러 서버로 분산시켜 서버의 부하를 줄이고, 시스템의 성능과 가용성을 높이는 기술을 말한다.즉, 서버 간 트래픽을 고르게 분배하여 한 서버에 부하가 집중되는 것을 방지한다.종류에는 클라이언트 사이드 로드 밸런싱 / 서버 사이드 로드 밸런싱이 있다. 우리는 클라이언트가 직접 여러 서버 중 하나를 선택하여 요청을 보내는 방식인 `클라이언트 사이드 로드 밸런싱`을 사용해볼 것이다. 📌 FeignClient`FeignClient`는 Spring Cloud에서 제공하는 HTTP 클라이언트로, Restful 웹 서비스를 호출할 수 있다.`Eureka`와 같은 서비스 디..
import itertoolsmaxNum = float('-inf')minNum = float('inf')def cal(numList, operList, result): global maxNum, minNum if not numList: if maxNum result: minNum = result return newNumList = numList[:] oper = operList.pop(0) if oper == "+": result = result + newNumList.pop(0) elif oper == "-": result = result - newNumList.pop(0) ..