study 37

[javaScript] 프로그래머스 - H-Index

H-Index https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한..

[javaScript] 프로그래머스 - K번째수

K번째수 https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입..

[javaScript] 프로그래머스 - 가장 큰 수

가장 큰 수https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr - 문제0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문..

쿠버네티스 Health Check

Health Check 쿠버네티스는 각 컨테이너의 상태를 주기적으로 체크해서, 문제가 있는 컨테이너를 자동으로 재시작하거나 또는 문제가 있는 컨테이너(Pod를) 서비스에서 제외하는 기능 Liveness probe : 컨테이너가 살아 있는지 아닌지를 체크하는 방법 Readiness probe : 컨테이너가 서비스가 가능한 상태인지를 체크하는 방법 Probe types Liveness probe와 readiness probe는 컨테이너가 정상적인지 아닌지를 체크하는 방법으로 다음과 같이 3가지 방식을 제공한다. Command probe : 컨테이너의 상태 체크를 쉘 명령을 수행으로 체크 HTTP probe : HTTP GET을 이용하여, 컨테이너의 상태를 체크 TCP probe : 지정된 포트에 TCP 연결..

[javaScript] 프로그래머스 - 키패드 누르기

[카카오 인턴]키패드 누르기 https://school.programmers.co.kr/tryouts/85961/challenges - 문제 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 ..

쿠버네티스 아키텍처 (마스터, 노드)

쿠버네티스는 크게 마스터(Master)와 노드(Node) 두 개의 컴포넌트로 분리 마스터(Master) 마스터는 쿠버네티스의 설정 환경을 저장하고 전체 클러스터를 관리하는 역할 etcd, kube-apiserver, kube-scheduler, kube-controllermanager로 구성 Kube-apiserver: 쿠버네티스 API를 제공하며, 클러스터의 모든 작업을 조율합니다. etcd: 클러스터의 모든 구성 데이터를 안전하게 저장하는 분산형 키-값 저장소입니다. Kube-scheduler: 새로운 Pod을 어떤 노드에 배치할지 결정하는 역할을 합니다. Kube-controller-manager: 클러스터의 상태를 감시하고 제어하는 여러 컨트롤러를 실행합니다. 노드(Node) 노드는 파드나 컨테..

쿠버네티스 (오브젝트, 컨트롤러)

쿠버네티스 오브젝트 (Kubernetes Objects) 쿠버네티스는 상태를 관리하기 위한 대상을 오브젝트로 정의합니다. 쿠버네티스 오브젝트는 영속성을 가지는 개체이며 쿠버네티스는 클러스터의 상태를 나타내기 위해 이 개체를 이용합니다. 어떤 컨테이너화된 애플리케이션이 동작 중인지 (그리고 어느 노드에서 동작 중인지) 애플리케이션이 이용할 수 있는 리소스 애플리케이션이 어떻게 재구동 정책, 업그레이드, 그리고 내고장성과 같은 것에 동작해야 하는지에 대한 정책 기본 오브젝트(Basic object), 컨트롤러(Controller), 오브젝트 스펙 및 메타 정보로 구성 오브젝트는 사용자가 쿠버네티스에 바라는 상태(desired state)를 의미하고 컨트롤러는 객체가 원래 설정된 상태를 잘 유지할수있게 관리하..

마이크로서비스 아키텍처 설계 (구성 요소, 고려 사항)

*마이크로서비스 개념 https://sumni.tistory.com/235 데브옵스(DevOps)와 마이크로서비스(microservices) 개념, 특징 데브옵스 데브옵스(DevOps)는 소프트웨어 개발 및 운영 프로세스를 통합하여 효율적이고 지속적인 소프트웨어 제공을 가능하게 하는 소프트웨어 개발문화 또는 방법론을 나타냅니다. "데브"는 소 sumni.tistory.com 마이크로서비스 아키텍쳐 구성요소 관리 컨테이너: 개별 서비스 인스턴스에 대한 컨텍스트(실행 환경) 제공 및 인 수명주기 관리. 가상 컴퓨터, Docker 컨테이너 또는 프로세스로 구현된 관리 컨테이너 사용. 외부 게이트웨이: MSA 구현은 API형태로 기능을 노출. 이런 서비스에 대한 액세스를 관리하고 트래픽 관리 및 보안 정책 적용..

컨테이너 오케스트레이션, 쿠버네티스(Kubernetes)

컨테이너 오케스트레이션(Container Orchestration) 여러 컨테이너를 자동으로 배포, 확장, 관리, 네트워킹, 서비스 발견 등을 수행하는 툴이나 플랫폼을 나타냅니다. (컨테이너 기반의 가상화 환경을 운영 관리) 이는 대규모의 컨테이너화된 애플리케이션을 효과적으로 관리하고 운영하는 데 도움을 줍니다. *주요 컨테이너 오케스트레이션 도구로는 Kubernetes, Docker Swarm, Apache Mesos, Amazon ECS 특징 자동 배포 및 스케일링: 컨테이너를 자동으로 배포하고 필요에 따라 스케일링할 수 있습니다. 새로운 컨테이너 인스턴스를 추가하거나 제거하여 애플리케이션의 부하에 대응할 수 있습니다. 서비스 발견 및 로드 밸런싱: 컨테이너가 동적으로 생성되고 제거될 때, 오케스트레..

가상화(Virtualization)와 컨테이너(Containerization)

가상화의 발전 과정 전통적인 배포 : 물리서버 기반 애플리케이션 실행 가상화된 배포 : 단일 물리 서버의 CPU에서 여러 가상 시스템 (VM) 실행 컨테이너 개발 : VM과 유사, 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유 가상화와 컨테이너 둘 다 확장성과 유연성을 제공하며, 클라우드 환경이나 마이크로서비스 아키텍처에서 특히 유용하게 사용됩니다. 어떤 시스템 레벨을 가상화 하는지가 다릅니다. 가상화 (Virtualization) 가상화는 하드웨어 리소스를 추상화하여 가상의 환경을 만들어내는 기술입니다. (하드웨어 레벨 가상화) 이는 하이퍼바이저(Hypervisor)라고 불리는 소프트웨어 계층을 통해 수행됩니다. 가상화는 주로 서버 가상화에 많이 사용되며, 다양한 운영 체제 및 애플리케..