본문 바로가기

분류 전체보기202

오답노트 (2회독) 1단원 객체 전이의 요소는, event에 이한 것이다. 서브클래스가 어떤 클래스가 instance화 될지를 정하는 패턴이, factory method 패턴이다. GOF - 자주 발생하는 문제에 대한 반복적 해결 방법 생성 : 추상팩토리,빌더,FACTORY METHOD, PROTO TYPE, SINGLETONE 구조 : ADAPTER(CLASS간 맞춰주기), BRDIGE(추상층을 분리하여 위아래로), COMPOSITE,DECORATOR,PROXY 행위: OBSERVER(변화된 상태 전달) , COMMAND, MEDIDATOR,TEMPLATE METHOD, VISITOR (행위는, 움직이는 것임을 기억하자) 팩토리매서드는 모든 생성을 다 하위에서, TEMPLATE METHOD는 알고리즘만 상위에서 정의하고 .. 2024. 2. 6.
마이크로서비스(MSA) 네트워킹 모노리스 : 마이크로서비스 아키텍처 이전 아키텍처를 모노리스라고 한다. 기존엔 WAR파일 하나로 묶여, 배포 되었다. (WAR 파일 1개 내부에 모든 기능을 다 담는다) (또한 DB는 1개의 통합 스키마로 구성) - 이러한 DB를 INTERGRATION DB라고 한다. 이러한 모노리스 구성은, 기능의 변경과 수정 등 과정이 번거롭다. 마이크로서비스 : 독립적인 요소들의 원할때 상호작용(각자가 독립적으로 존재함이 포인트이다) 주로 UML로 DIAGRAM을 표현하는 것이 좋다. 1개의 마이크로서비스는 독립적인 CONTAINER에 배포될 것이다. 교류를 진행하기 때문에 INTERFACE와 , 둘을 지나는 메세지 등이 있다. 이 통신 구조상, REST를 주로 사용한다. (Netflix가 MSA구조의 예시가 된다.. 2024. 2. 5.
쿠버네티스 네트워킹 1. 컨테이너를 Networking 하기 ex) application을 배포한, container를 생성했다. 이때 해당 application이 db에 crud를 진행한다. Container1엔 application을 2에는 db를 작성하고, pod로 이 container 두개를 관리한다 . *이 방식은, 동일 pod에서 db와 application을 동작시키면 문제 식별이 어렵다. 주로, application을 1개의 container,pod,service로, db또한 1개의 container,pod,service로 분할한다. Service의 ip주소를 확인하기는 쉽지 않다. 그 이유는 , 쿠버네티스는 kube-dns service를 자체 운용, 자동 실행하기 때문이다. service이름:ip주소의 k.. 2024. 2. 4.
레플리카 실제 제작에선 , POD를 직접적으로 사용하기보단 1. 레플리카를 사용하거나 2. 배포 방식을 활용한다. 그 중, 레플리카 방식을 활용해보자 POD는 NODE가 실패하면 POD가 같이 종료된다. 또한 CPU가 부족해도 POD가 종료될 수 있다. 즉 여태까지 했던 것처럼 YAML에 POD를 정의하고 KUBECTL APPLY를 진행하면, 포드가 사망하면 돌리기가 힘들다. 이러한 예시를 생각해보자 EX) POD의 실행이 어떠한 이유로 종료되었다. 그렇다면 현재 SERVICE는 남아있지만, POD는 동작이 멈추었기 때문에 웹사이트는 동작하지 않는다. 그러므로 주로 POD를 그대로 배포하기보단 레플리카 SET를 배포한다. 레플리카 세트는 , K8S의 추가 구성에서 코어 기능으로 진화했다. 포드 실행시 레플리카 몇.. 2024. 2. 4.
배포 실습/ 쿠버네티스를 활용한 배포 DockerHub에서 img파일을 가져와서 , 이를 다시 배포하는 실습을 진행하자. 방금 전 받아왔던 release 0에 대해 queue를 추가하는 내용을 실습해보자. 1. POD 정보 추가 한 YAML파일에 정리한 이유는, 이 POD 들이 같은 K8S 클러스터에서 작동됨을 표현하기 위해서이다. 2. SERVICE 작성 동일하며, nodePort만 변경하였다. kubectl apply -f . 로 모든 yaml파일을 적용시켰으며, 잘 동작한다. 현재 30010으로 localhost로 접근하면 불가능해서, 자체적으로 포트포워딩을해서 동작시키고 있다. 해당 문제가 service를 사용하고는 있지만 내부 port 포워딩 까진 되지 않으므로.. 고민이 필요하다. 포트포워딩을 하지 않아도 원래의 service의 .. 2024. 2. 4.
DFS/BFS를 활용한 TSP 문제의 해결 **DFS/BFS를 푸는 방법 무조건, TREE부터 그리고 그 TREE의 특징을 이해하자. EX) 한번 간 경로만 구하면 된다. EX) 밑의 TSP는 DEPTH가 N이고(N-1) 그때 다음에 갈 곳이 START일때만 종료된다. 즉, BACKTRACKING의 조건 OR 가지치기의 조건을 잘 생각하자 백준 10971 TSP 문제를 도전하였으나, 실패 하였다. 일단 코드를 작성하고 , 그 흐름을 작성하겠다. import sys N = int(sys.stdin.readline()) forloop = 0 costlist = [list(map(int,sys.stdin.readline().split())) for _ in range(N) ] visited = [0] * (N) m = float('inf') def D.. 2024. 2. 4.
Docker, Docker를 활용해 상대방의 image를 보고 container를 생성 Docker는 컨테이너 형성에 도움을 주는 것임을 기억하자. 컨테이너는 linux 전체를 포함한다. ubuntu,application등을 포함한다. 남이 처음 생성한 application은, 내 컴퓨터에서 바로 작동되지 않는 경우가 많다. 해당 application의 서버가 내 컴퓨터에 설치 되어 있지 않거나, tomcat과 같은 것이 설치되어 있지 않을 경우가 있다. 또, python의 버전이 다를 수도 있다. (이전, 동기형에게 mysql server를 설치하지 않아도 된다.. 라는 의미를 물어봤을때 너가 application을 만들고 이를 배포하였는데, 사용하는 사람이 mysql이 깔려있지 않다면 해당 mysql이 없기때문에 동작하지 않을 것이다 라고 얘기했던 내용을 기억하자) 이때 containe.. 2024. 2. 3.
K8S (쿠버네티스란?) 사람들이 docker가 무엇이냐고 물어보면? 가장 유명한 컨테이너화 시스템이라고 설명하면 간단하다. docker container로 application을 관리할 수 있다. 허나, 수많은 docker container들을 관리해야할 필요 또한 있을 것이다. 이 관리는, 단순히 관리 정리 뿐만 아니라 자동화 개념을 포함한다. AWS를 사용한다는 의미가 KUBERNETES도 사용하지 않고 그냥 AWS 그 자체로 컨테이너 관리 등 모든 것을 진행함이 아님에 주의하자. 구글 클라우드, 혹은 애저 등 다양한 클라우드 환경에서 동작할 수 있음에 주의하자. DOCKER 내부에도 이러한 관리 프로그램인 DOCKER SWARM이 존재한다. SWARM은 K8S보다 작업이 간단하다. 허나 K8S로 할 수 있는 것이 더욱 많.. 2024. 2. 3.
DFS/BFS 최단 거리 TIP 최종 정리 백준 1697 import sys from collections import deque N,M = map(int,sys.stdin.readline().split()) graph = [0] * 100001 #M까지 완성 def BFS(index) : q= deque([index]) cnt = 0 while q : for i in range(M) : cnt = cnt +1 for j in range(3**i) : next = q.popleft() if next == M : return cnt -1 if 0 2024. 2. 2.
명령어 실습 KUBCTL : 개념의 복습 KUBCETL -> POD형태로의 배포는 지양하는 것이 옳지 않을까. POD형태의 배포는 , 가용성이 크게 감소한다. DEPLOYMENT 형태로 배포하는 것이 옳지 않을까 YML단위 배포시 DEPLOYMENT가 옳을 수 있다. 실습시 주의 KUBECTL이 메인이 된다. (쿠버네티스의 리소스 리스트를 출력) -O WIDE를 통해서, 해당 리소스와 관련된 추가적인 정보가 나온다. KUBECTL DECRIBE 혹은 KUBECTL LOG를 통해 문제를 해결할 방법을 찾는다. 대부분의 배포는 KUBECTL APPLY를 통해서 진행한다. 그 이유는 생성, 혹은 이미 리소스가 존재할때 수정까지 가능하다. KUBECTL EXEC 를통해서 POD에서 실행되는 APPLICATION에 들어가 명.. 2024. 1. 31.