분류 전체보기 35

메타 데이터 락

배경 메타 데이터락을 공부하던 도중, 의문점이 들었습니다 문제의 코드입니다. 다음의 코드는 access_log의 구조를 바꾸기 위해 access_log_new를 생성하여 access_log의 데이터를 옮기고, access_log_new를 다시 access_log 로 만드는 과정입니다. 궁금증 P166의 중반부에 있는 예제에서 '트랜젝션을 autocommit으로 실행(BEGIN 이나 START TRANSACTION으로 실행하면 안됨)' 라고 적혀있는데 왜 그럴까요? start commit 을 쓰면 안되는 이유가 있을까요? 공식문서에 따르면, 트랜젝션을 시작하게 되면(start transaction..등) 기존에 있었던 UNLOCK TABLE 이 수행됩니다. 이는, 코드를 보면 중간에 commit을 통해서 ..

테스트 더블이란 무엇인가

테스트 더블, 테스트 대역 모든 유형의 비운영용 가짜 의존성을 포괄하는 용어이다. 더미, 스텁, 스파이, 목, 페이크로 나눌 수 있다. 하지만 크게 보면 크게 목(목, 스파이)과 스텁(스텁, 더미, 페이크) 로 나눌 수 있다. 목 외부로 나가는 상호작용을 모방하고 검사. 목과 스파이 목 : 검증 기능을 제공한다. 스파이 : 기능적으로 목과 같다. SUT의 간접 출력을 제공하기 위한 대역이다. 스텁 내부로 들어오는 상호작용을 모방. 스텁, 더미, 페이크는 얼마나 똑똑한지에 따라 달라진다. 더미는 SUT를 구성하거나 테스트를 실행하는 데 필요하지만, 테스트 하려는 요구사항에는 전혀 영향을 주지 않는 대역이다. Stub은 SUT의 간접 입력을 제공하기 위한 대역이다. Fake는 실제로 동작하지만, 운영 환경에..

그림으로 배우는 쿠버네티스 CH4 애플리케이션 노출

배포한 애플리케이션을 노출하는 방법 다음과 같은 방법이 있다. 간단한 방법 port-forward HostPort hostNetwork NodePort LoadBalancer ExternalName ClusterIP, Headless Endpoints Ingress 간단한 방법(port-forward, HostPort, hostNetwork) 포트 포워딩 호스트 PC에서 가상 머신으로 접속 시 포트 포워딩 사용 port-forward 옵션 k port-forward fwd-chk-hn 80:80: 마스터 노드의 80번 포트를 fwd-chk-hn 노드의 80번 포트로 포워딩 노드가 재시작 될 경우 포트 포워딩이 사라짐. 내부에서 포트를 포워딩할 때만 쓰지 영속적으로 쓸수는 없음 실습 마스터 노드 → 워커 ..

그림으로 배우는 쿠버네티스 CH3 애플리케이션 배포법

배포 형태는 오브젝트이다. 오브젝트는 파드, service, namespace, volumes 가 있는데, 그중 Pod와 파드와 관련된 오브젝트들을 알아본다. 애플리케이션으로 배포되는 오브젝트 형태 파드 (Pod) 디플로이먼트 (Deployment) 레플리카셋 (ReplicaSet) 잡(Job): 파드로 계속 떠있으면 부담이 되는 작업을 처리하기 위한 오브젝트 크론잡 (CronJob) : 잡을 주기적으로 실행할 수 있도록 하는 오브젝트 데몬셋 (DaemonSet) : 노드마다 1개씩만 올라가는 파드 (칼리코) 스테이트풀셋 (StatefulSet) : 순서를 지키면서 배포가 되고 상태를 가지고 있는 파드 기존의 Pod는 stateless이다. 파드(Pod) pod.yaml apiVersion: v1 #적합..

그림으로 배우는 쿠버네티스 CH2 쿠버네티스를 배우기 위한 사전 준비 작업

실습 버전 업그레이드 실습 버전을 1.2로 업시킨다. https://user-images.githubusercontent.com/52024566/156181043-6cdcf0af-7aaa-442d-b7a8-42c476fd442f.png 혼동되는 용어 정리 파드 컨테이너 애플리케이션 가 혼동되어 쓰인다. 파드나 컨테이너는 구조적인 단위, 구조, 형태에 대한 단위라고 한다면, 애플리케이션은 기능의 단위라고 할 수 있다. 즉 애플리케이션은 단일 컨테이너의 단위가 될 수도 있고, 복수의 컨테이너가 될 수도 있다. 또한 파드와 1 대1 맵핑될 수도 있고, 파드가 여러 개 모여서 동작하는 애플리케이션도 동작할 수 있다. 파드(Pod) : 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 최소 컴퓨팅 단위 컨테이너..

요즘 나의 근황...

회사에 입사한지 거의 2주가 되었다! 그동안 내가 느낀 점은.. 다음과 같다. 1. 나는 우물 안의 개구리였다. 회사에 들어가니 정말 배워야 할 게 많았다. 모노리스 환경에서만 개발해본 터라, 멀티 모듈을 이해하기가 어려웠고, 구조가 어떻게 되어있는지 파악하기도 어려웠다. 당장 배포하는 것도, 로컬 및 개발 DB를 실행하는 것도 막혔다. 배포를 하고 난 뒤에는 argoCD와 DataDog와 같은 모니터링 툴을 통해 API 요청을 분석해야 한다는 것을 알게 되었다. 개발 외적인 것 뿐만 아니라, 조직에서 필요한 업무를 배우게 되었다. 조직의 한 스쿼드, 그리고 백엔드라는 챕터에서 일하는 방법, 그리고 업무 분담 방식( 데일리 미팅, PBR, OKR, 캘린더 사용법..) 등 모든 것이 지금도 낯설고 어렵다...

BFF 패턴

회사에서 뭔가 Internal 서버의 정체를 알게되었는데, 아는 언니(멋있는 언니 완전 짱)가 자기 회사는 BFF패턴을 쓴다고 했던 게 생각이 났다. 우리 회사도 서버를 위한 서버를 두는 느낌으로 일맥상통하는 것 같다. 보통 회사들이 BFF 패턴을 많이 쓰는 것 같기도 하고 그런거 같아서, 찾아보니까 거의 다 쓴다. BFF (Backend For Frontend) 프론트엔드에 표현될 데이터를 위한 백엔드 즉, 프론트엔드 데이터에 대한 책임을 백엔드가 가진다. 즉, BFF는 단순히 데이터를 제공하는 것에서 나아가 프론트엔드 친화적으로 데이터를 제공한다. 화면에 보이는 데이터를 가공하는 책임은 서버가 지고, 프론트엔드는 UI를 그리는데 집중한다. 여러 조건에 대한 처리는 서버가 처리하고 프론트엔드에 보일 데..

인수테스트와 시스템 테스트

난 처음에 인수 테스트 = API 테스트 인 줄 알았다. 근데, 사수님이 인수테스트는 다양하게 쓰인다고, 실제 유저가 하는 테스트가 인수테스트에 가깝고 내가 알고 있던 인수 테스트는 시스템 테스트에 가깝다고 말씀 주셨다. 의미가 궁금해져서 이를 찾아보게 되었다. 소프트웨어 개발 단계 소프트웨어 개발 단계에 따른 테스트는 소프트웨어 개발 단계의 순서와 짝을 이루어 테스트를 진행해나가는 방법이다. 여기서 생각했던 시스템 테스트가 내가 RestAssured로 개발했던 테스트이고, 인수 테스트는 실제 유저가 원하는 대로 잘 동작하는지 보는 테스트이다. 시스템 테스트 시스템 전체가 정상적으로 작동하는 지를 체크하는 시스템 테스트이다. 모듈이 모두 통합된 후 사용자의 요구 사항들을 만족하는지 테스트하는 것이다. 즉..

쉽게 시작하는 쿠버네티스 CH7 강의 마무리

CH7 강의 끝! 쿠버네티스 공부 방향성 document를 본다. 쿠버네티스의 dns 정보 조회한다. (Domain Name System 정보 조회) kubenetes dns query 검색 결론은 뭐 랩과 공식문서를 보라.. 후속강의 “그림으로 배우는 쿠버네티스” 이당 쿠버네티스에 대한 이해 쿠버네티스 오브젝트들을 코드로 이해하기 쿠버네티스의 요소 별 구성 및 관리법

쉽게 시작하는 쿠버네티스 CH6 쿠버네티스 Tips

kubectl 쉽게 쓰는 법 배시 자동 완성 : k만 입력하면 kubectl을 쉽게 설정할 수 있다. k .. 배쉬 셸에 별명 지어 주기 alias k=kubectl alias ka = ‘ kubectl apply -f ‘ Alias keq = ‘ kubectl exec …’ 와 같이 지어줄 수 있다. 쿠버네티스 업그레이드 버전 업그레이드 계획을 수립한다 → kudeadm 업그레이드 → kubelet 업그레이드 → 업그레이드 완료를 확인한다. 그냥 대충 보고 나중에 다시 찾아봐야 겠다. kubectl get nodes kubeadm upgrade plan yum upgrade kuberadm-1.25.1 -y // kubeadm 업그레이드 kubeadm version kubeadm upgrade appl..