전체 글 468

(Python) 트위터 메인프레임만들기

소스 다운로드 : https://github.com/armyost/miniterWithPytest.git armyost/miniter flask를 사용한 백엔드 1. Contribute to armyost/miniter development by creating an account on GitHub. github.com app.py를 실행시키면 완성본이 실행됩니다. 기능은 회원가입, 팔로우/언팔로우, 트윗, 타임라인 입니다. Python에서 Contoller는 다음과 같이 구현됩니다. @app.route("/signup",method=['POST']) def signup(): // 함수정의 Flask가 받은 Json을 파싱하여 사용하는 것은 간단하다. @app.route("/signup",method=[..

Programming/Python 2021.05.04

깔끔한 파이썬 탄탄한 백엔드 2. HTTP 구조와 이해 - 비제이퍼블릭

HTTP는 웹상에서 서로 다른 서버 간에 하이퍼텍스트 문서, 즉 HTML을 서로 주고받을 수 있도록 만들어진 프로토콜, 통신 규약이다. 웹상에서 네트워크를 통해 서버 사이에 통신할 때 어떠한 형식으로 서로 통신하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조"라고 보면 된다. HTTP 통신 방식에는 2가지 특징이 있다. 하나는 HTTP의 요청과 응답 방식이고 또 다른 특징은 stateless다. HTTP 요청과 응답 먼저 HTTP 프로토콜에 대해서 이해해야 할 것은, HTTP는 기본적으로 요청과 응답의 구조로 되어 있다는 것이다. HTTP를 기반으로 통신할때 클라이언트가 먼저 HTTP 요청을 서버에 보내면 서버는 요청을 처리한 후 결과에 따른 HTTP응답을 클라이언트에게 보냄으로써 하나의 HTTP 통신..

Programming/Python 2021.05.02

깔끔한 파이썬 탄탄한 백엔드 1. 환경 설치 - 비제이퍼블릭

Flask Flask는 파이썬으로 웹 에플리케이션을 구현할 때 사용되는 프레임워크다. Flask의 홈페이지에 나온 공식적인 설명은 "micro web framework"이다. 즉 군더더기가 없는 아주 가벼운 웹 프레임워크라는 뜻이다. 파이썬 기반의 웹프레임워크에는 Flask 이외에도 Django등 다른 여러 웹 프레임워크가 있다. 하지만 다른 웹프레임워크들은 여러 모듈과 기능들을 제공하느라 프레임워크 자체가 무겁고, 학습곡선이 높을수 있는데 비해 Flask는 비교적 쉽게 배워서 사용할 수 있다. Flask 설치 Flask는 pip을 통해서 간단하게 설치할 수 있다. pip는 파이썬의 패키지 메니저다. pip를 사용하여 터미널 등의 커맨드라인 환경에서 간단하게 원한는 파이썬 패키지들을 설치할 수 있다. c..

Programming/Python 2021.05.02

CKA(Certified Kubernetes Administrator) 시험, 합격 후기

우선 선 인증으로 글을 시작하려 한다. 아직 쿠버네티스에 대한 니즈가 시작단계라서 그런지, CKA시험에 대한 정보가 그리 많지 않고 작년(2020년) 후기들이 많아 혼선이 좀 있었다. 그래서 '나는 합격하면 노하우를 꼭 공유해야지'라고 여러번 생각했던 터였다. 이에 따라 아래에 시험 준비, 시험 당일, 합격노하우 등을 공유하고자 한다. 1. 시험 준비 시험준비는 작년(2020년) 방식과 똑같이 해도 좋을것 같다. Udemy에서 CKA관련 강의가 있는데 Course 갯수가 많긴하지만 빡세게 들으면 1달이면 2번씩 정독가능하다. 나같은경우 일끝나고 밤마다 2시간씩 일주일 5일이상 Udemy 강의에 할애했고, Course를 모두 이수하는데 1달반정도 걸린듯하다. 해당 Course를 한번 쭉 공부 및 실습하는데..

기타/자격증 2021.04.27

(Kubernetes) Kube-proxy, Kube-dns, core-dns

kube-proxy 쿠버네티스에서 서비스를 만들었을 때 나오는 ClusterIP나 NodePort로 접근하게 해주는건 큐브프록시(kube-proxy)입니다. 큐브프록시는 쿠버네티스 클러스터의 각 노드마다 실행되고 있으면서 클러스터 내부 IP로 연결되기 바라는 요청을 적절한 곳으로 전달해 주는 역할을 합니다. 큐브프록시가 네트워크를 관리하는 방법은 userspace, iptables, ipvs 3가지가 있습니다. 초기에는 userspace가 기본 모드였고 현재(2018년 6월)에는 iptables가 기본모드입니다. 그리고 iptables에서 ipvs 모드로 넘어가려고 하고 있습니다. ※ kube-proxy는 DaemonSet으로 정의 되어 있습니다. Kube-dns, core-dns 쿠버네티스 v1.12 ..

PaaS/Kubernetes 2021.04.13

Kubernetes Master/WorkerNode Server 설치하기(CentOS+Docker)

CentOS7.x 버전으로 작업을하였는데, 가급적 CentOS외 linux OS를 쓰기 바란다.. firewalld가 껴있는 OS 네트웍 커널 및 방화벽 정책이 두고두고 괴롭힐 것임 ■ 사전 OS 작업 SELINUX 끄기 # vi /etc/selinux/config SELINUX=enforcing 를 disabled로 변환 # setenforce 0 Firewalld 끄기 # systemctl stop firewalld # systemctl disable firewalld # vi /etc/hosts에 node dns정보 등록하기 DNS에 쿠버네티스 노드가 등록이 된게 아니라면 hosts에 직접등록해줘야 합니다. swap 비활성화 $ swapoff -a $ vi /etc/fstab swap 영역 비활성화..

PaaS/Kubernetes 2021.04.11

(Kubernetes) 클러스터 디자인 하기

■ ETCD 서버의 다중화 - ETCD 는 KEY-VALUE 쌍의 Database이다. - ETCD가 멀티 인스턴스일때 Write는 Leader만 가능하다. Leader는 매번 voting을 통해 정해진다. Leader 에서 Write를 하고 이를 다른노드에 복사한다. - Quorum 개념이 적용되는데, Quorum이란 멀티노드에서 성공적인 Write가 되기위한 최소 노드의 수를 말한다. 이는 Quorum = N/2+1공식을 따른다. 그래서 홀수 노드 구성일때만 효과적임 - Read는 모든 멀티 인스턴스가 가능하다.

PaaS/Kubernetes 2021.04.11

(Kubernetes) Ingress

Ingress 정의 쿠버네티스 Ingress란 HTTP(S) 기반의 L7 로드밸런싱 기능을 제공하는 컴포넌트이다클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이며, 일반적으로 HTTP를 관리함. Ingress는 외부에서 쿠버네티스 내부로 들어오는 네트워크 요청을 어떻게 처리할지 결정하며, 쉽게 말해 외부에서 쿠버네티스에서 실행중인 Deployment와 Service에 접근하기 위한 관문과 같은 역할을 담당한다. 쿠버네티스 서비스는 기본적으로 L4 레이어로 TCP 단에서 Pod를 로드밸런싱한다. 그런데 MSA(마이크로 서비스 아키텍쳐)의 경우 쿠버네티스 서비스 하나가 MSA 서비스 하나로 표현되는 경우가 많고, 서비스가 하나의 URL로 대표되는 경우가 많다(/member, /product..

PaaS/Kubernetes 2021.04.08

(Kubernetes) DNS

쿠버네티스 DNS는 클러스터의 서비스와 DNS 파드를 관리하며, 개별 컨테이너들이 DNS 네임을 해석할 때 DNS 서비스의 IP를 사용하도록 kubelets를 구성한다. 클러스터 내의 모든 서비스(DNS 서버 자신도 포함하여)에는 DNS 네임이 할당된다. 기본적으로 클라이언트 파드의 DNS 검색 리스트는 파드 자체의 네임스페이스와 클러스터의 기본 도메인을 포함한다. POD 및 SERVICE FQDN으로 찾을 때 신텍스 pod-ip-address.my-namespace.pod.cluster.local your-svc.your-namespace.svc.cluster.local POD 안에서 도메인을 찾는 원리 kubelet은 POD를 실행할 때 /etc/resolv.conf 파일안에 CoreDNS 가리키는 ..

PaaS/Kubernetes 2021.04.07

(Kubernetes) Service

1. 서비스(Service) 란? 쿠버네티스에서 말하는 서비스라는 자원은 POD의 집합입니다. 동일한 서비스 동작을 구현하는 여러가지 POD를 하나로 묶어 관리하는 객체이죠. 왜 서비스라는 자원이 필요할까요? 2 가지 이유가 있습니다. 1) 서비스를 위한 고정된 IP가 필요하다. 쿠버네티스는 POD가 항상 건강한 상태이도록 관리합니다. 따라서 POD 하나가 이상이 있어 죽어버리면, 해당 POD를 다시 띄우죠. POD는 새로 띄워질 때마다 동적으로 IP를 할당 받습니다. 이러한 POD의 IP변경 가능성이 서비스를 제공하려는 상황에서는 문제가 되죠. 서비스를 위해서는 고객들이 이 서비스를 위해 접근할 고정된 IP 주소가 필요합니다. 여러분이 장사를 한다고 생각해보세요, 가게의 위치를 이리저리 계속 옮겨 다니..

PaaS/Kubernetes 2021.04.06