전체 글 80

L4와 L7

Load Balancer traffic을 받아 여러 대의 서버에 분산시키는 기능을 하는 하드웨어 or 소프트웨어 L4와 L7이 통용됨. L4부터 port를 다룰 수 있기 때문 주요 기능 Network Address Translation: 사설 IP를 공인 IP로 바꿈 Tunneling: 데이터를 캡슐화하여 연결되어진 노드만 그 데이터의 캡슐을 풀어서 볼 수 있게 해줌 Dynamic Source Routing protocol(DSR): 요청에 대한 응답을 할 때 로드밸런서가 아닌 클라이언트의 IP로 응답 L4 Load Balancer Transport 계층을 사용 IP, Port를 기준으로 스케줄링 알고리즘을 통해 부하를 분산 요청하는 서비스의 종류와 상관 없이 최적의 서버로 요청을 전송하고 결과를 ret..

Cloud Architecture 2022.06.16

CAP 이론, ACID, Eventual Consistency VS Strong Consistency

CAP 이론 시스템은 일관성(Consistency), 가용성(Availability), 분단 허용성(Partition tolerance) 중 두 가지만 가질 수 있다는 이론 위의 그림처럼 C+A , C+P, A+P의 조합만 가능하지, C+A+P 모두를 만족하는 시스템은 존재할 수 없음 Consistency 데이터를 저장하는 장비가 많든 적든 모든 장비에서 동일한 데이터가 저장되어 있어야 한다는 것 DB 속성에 Consistency가 있다면, 트랜잭션 기능 혹은 그에 준하는 매커니즘이 존재한다 Availability 죽지 않은 상태의 모든 서버는 클라이언트에게 항상 정상 처리 응답을 보내주여야 한다는 것 현재 시스템에 문제가 있어서 읽을 수 없다고 보내면 가용성이 보장되지 않는 것 Partition Tol..

Cloud Architecture 2022.06.16

Proxy / Forward Proxy / Reverse Proxy

Proxy란? Proxy : 대신, 대리 두 PC가 직접 통신하지 않고 서버를 통해서 대리로 통신하는 것 중계 역할 서버를 Proxy Server로 지칭함 Proxy Server는 보안과 캐싱 등의 기능을 제공 Client는 Proxy Server를 '서버'로 인식하고, Server는 Proxy Server를 Client로 인식한다. 서버가 어디에 위치하느냐에 따라 Forward Proxy와 Backward Proxy로 나뉨 Forward Proxy client에서 server로 리소스 요청 시 직접 요청하지 않고 proxy server를 거쳐서 요청한다. server에서 받는 IP는 client IP가 아닌 proxy server의 IP를 받게 되어 server는 client가 누구인지 알 수 없다. ..

Cloud Architecture 2022.06.15

TCP, UDP, TCP Window Size

OSI 7 layer TCP(Transmission Control Protocol) 인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 IP가 데이터의 배달을 처리 / TCP는 패킷을 추적 및 관리함 패킷: 컴퓨터 간에 데이터를 주고 받을 때 네트워크를 통해서 전송되는 데이터 조각 연결형 서비스를 지원하는 프로토콜. 인터넷 환경에서 기본 TCP의 특징 연결형 서비스로 가상 회선 방식을 제공한다 (발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다) 3-way handshaking 과정을 통해 연결하고, 4-way handshaking을 통해 해제한다. 흐름 제어 및 혼잡 제어 가능 높은 신뢰성 보장 UDP보다 속도가 느리다. 전 이중(Full duplex..

Cloud Architecture 2022.06.15

SAGA 패턴

Transaction이란 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위 4가지의 특성 원자성 일관성 독립성 지속성 Transaction 처리 기존 Monolithic Architecture 에서는 DBMS의 transaction 기능으로 데이터 commit이나 rollback을 일관적으로 처리 첫 번째 대안 : Two Phase Commit 한 서비스에서 장애가 발생하거나 각 서비스에서 Lock이 걸리면 성능 이슈 있어 비효율적 서비스 별 인스턴스가 분리되어 관리에 어려움이 있음 SAGA 패턴 마이크로 서비스 아키텍처에서 서비스들끼리 이벤트를 주고 받아 특정 서비스에서 작업이 실패하면 이전까지의 작업이 완료된 서비스에게 보상(complimentary) 이벤트를 소싱하여 분산 환경에서 원자성..

Cloud Architecture 2022.06.14

TDD, BDD, DDD

TDD(Test Driven Development) 테스트 주도 개발 매우 짧은 개발 서클의 반복에 의존하는 Software developement process new feature에 대해 자동화된 케이스 작성 후 테스트 케이스를 통과하는 코드 작성, 이후 코드에 대한 refactoring Test Case 작성 - 기능 구현 - 리팩토링 단계를 반복하여 좋은 코드를 작성하기에 유리함 테스트를 통해 기능의 안정성 보장 절대적인 코드량이 늘어나 프로젝트의 개발 시간이 증가 Test case 작성 시 높은 이해도가 필요, 진입장벽이 높은 편 BDD(Behavior Driven Development) 행위 주도 개발 Test Case 자체가 요구사항이 되도록 개발 실제 값이어야 하는 기대값과 같은 형태로 스..

Cloud Architecture 2022.06.14

Circuit Breaking

하나의 서비스가 장애가 발생하게 되면 장애 서비스를 호출하는 서비스는 대기 상태가 되고, 다시 대기중인 서비스를 호출하는 또 다른 서비스도 대기하게 되어 장애가 차례대로 전파됨 이런 현상이 서비스간에 연쇄적으로 발생하지 않게 하기 위한 기능이 Circuit Breaker 탄력적인 microservice architecture를 구성하기 위한 중요한 패턴 istio에서는 destination rule로 구현 가능 $ kubectl apply -f -

Cloud Architecture 2022.06.14

Micro Service Architecture

Micro Service Architecture (MSA) 독립적으로 디플로이할 수 있는 서비스들을 조합하여 큰 어플리케이션을 구성하는 아키텍처 패턴 Gartner는 Inner Architecture와 Outer Architecture로 나눔 Inner Architecture: Micro Service의 구조를 구현하기 위한 아키텍처 Outer Architecture: Micro Service의 빠른 개발, 테스트, 배포, 운영과 확장성 확보를 위한 기능적, 운영 관점의 아키텍처. 서비스의 분산화로 인한 복잡도를 마이크로 서비스 외부에 위임 MSA의 구성 요소 1. API/Edge Gateway API Gateway는 API서버 앞단에서 모든 API 서비스들의 엔드포인트를 단일화하고 API에 관리 기능을..

Cloud Architecture 2022.06.14

CKAD(Certified Kubernetes Application Developer) 자격증 후기(2022.05)

들어가며 지난 4월에 CKA 자격증을 취득하였고, 회사 책임님이 CKA를 취득하면 CKAD는 비교적 쉽게 취득할 수 있다고 알려주셔서 바로 CKAD 자격증을 준비하기 시작했다. CKA 자격증 취득 후기 : https://juniquerepo.tistory.com/55 CKA(Certified Kubernetes Administrator) 자격증 후기 (2022.04.05 - v1.22) 들어가며 2019년부터 DevOps 엔지니어로 커리어를 쌓기 시작한 지 어느새 4년차가 되었다. 작년까지 AWS DevOps와 GCP DevOps 자격증을 취득하였고, 올해는 어떤 새로운 자격증을 취득하면 좋을까 하다가 juniquerepo.tistory.com 결론부터 말하자면 CKAD가 더 어려운 느낌이어서 CKA 자..

CKAD 2022.05.04

Mock Exam

Secret 생성 명령어 kubectl create secret generic db-secret-xxdf --from-literal=DB_Host=sql01 --from-literal=DB_User=root --from-literal=DB_Password=password123 NodePort 타입의 Service 생성 kubectl expose 명령어로 생성 지양. expose 명령어는 nodeport 옵션이 없음 port, targetport는 pod의 port와 동일하게 설정하고, nodeport 옵션을 별도로 주고 생성함. apiVersion: v1 kind: Service metadata: name: my-service spec: type: NodePort selector: app: MyApp p..

CKAD 2022.05.02