전체 글144 [Go] struct 와 포인터(자바 클래스와 비교) k8s 및 go 관련해서 사내 스터디를 진행 중입니다. 근데 struct가 어떻게 동작하는지 헷갈려서 자바와 비교를 하게 되었습니다. 우선 자바 같은 경우에는 class가 있습니다.이런 식으로 하게 되면, test1 이랑 test2가 같은 객체(메모리 주소 값)를 가지게 됩니다.test1의 필드를 수정해도 test2의 필드도 같이 수정이 되게 됩니다.그래서 복사본을 따로 만들어주거나 dto를 사용하는 등 예상치 못한 수정을 막아야 합니다. 그럼 go의 struct도 똑같이 동작을 하는지 궁금했습니다. s라는 student struct와, tt라는 stude struct가 있습니다.tt := s 를 이용하여 주면, tt와 s가 같은 메모리 주소의 변수를 이용하고 있는지 궁금했습니다. 이를 실행하면,이.. 2024. 6. 25. [GO] go를 이용한 안정성 패턴 구현(서킷) 클라우드 네이티브 Go 책을 참고했습니다. go를 이용하여 안정성 패턴을 구현해봅니다.(분산 애플리케이션에서의) 서킷 브레이커서비스가 실패할 경우, 장애가 퍼지는 걸 막을 수 있습니다. 예를 들면, db lock 이나 리소스 부족 등으로 인해 timeout이 발생할 수 있습니다. time out이 계속해서 발생하게 될 경우에는 뒤의 요청에 대해서도 처리를 하지 못합니다. 만약 MSA 라면, 모든 서비스들이 영향을 받게 되고 이는 전체 서비스 장애와 이어 집니다. 또한 클라이언트가 retry까지 하게 되면 네트워크 단에 부하가 엄청나게 발생합니다.서킷 브레이커는 이러한 장애를 막을 수 있습니다. 에러가 몇 번 이상 발생했을 경우 서킷을 open 합니다. 그러면 기본 로직은 동작하지 않고 바로 erro.. 2024. 6. 12. [K8S] 쿠버네티스 스터디 - 3(PV, Storage, Config Map) Persistence Volume(PV)docker에도 volume이 있음.-> 컨테이너의 데이터를 영구적으로 보관하기 위해서 이용함.-> POD 에도 이를 지원하는 기능이 있음. apiVersion: v1kind: Podmetadata: name: tmpspec: containers: - image: ... volumeMounts: - mountPath: /opt //컨테이너 내부 경로 name: data-volume volumes: - name: data-volume hostPath: path:/data type: Directory하지만 클러스터에서는 권장하지 않는 방법이라고 함.(단일 노드는 상관이 없음.)-> 이는 모든 노드의 /.. 2024. 5. 20. [K8S] 쿠버네티스 스터디 - 2(Service, Ingress) Sevice서비스는 사용자(포드 그룹, db 등)와 통신하는 데에 도움을 줌. service를 통해서 node 내부의 pod와 사용자를 연결시켜 줄 수 있음.(docker의 port forwarding 느낌?) 이런 식으로 통신 가능(udemy의 이미지 저작권 때문에 직접 그려서 넣었습니다.) 즉 node의 포트 - service의 port - pod 포트(targt port)로 통신이 가능함. apiVersion: v1kind: Servicemetadata: name : myapp-service spec: type: NodePort ports: - targetPort: 80 port : 80 nodePort : 30008 selector: //다른 pod와 연결이.. 2024. 5. 20. [K8S] 쿠버네티스 스터디 - 1(pod, replica set, deployment, namespace) 사내 쿠버네티스 스터디 PODPOD 는 K8S에서 만들 수 있는 가장 작은 단위POD는 보통은 컨테이너와 1 대 1로 매핑확장을 위해서 기존 POD에 컨테이너를 추가하지 않음.(새로운 POD를 생성하거나 POD를 지움) POD 하나에 여러 컨테이너를 넣을 수 있음.(파일 관리 같은 Helper Container가 필요할 수 있음.)-> POD만 정의하면 모든 컨테이너가 함께 작동하기 때문에 관리하기 용이. 이들은 서로 같은 공간을 공유하기 때문에 파일이나 통신이 용이. //pod 생성kubectl run [pod name] --image [image_name]//pod 목록kubectl get pods POD들은 YAML 파일 기반으로 만들 수 있음.# pod-def.ymlapiVersion : .. 2024. 5. 8. [NextStep] TDD, 클린 코드 with Java 18기 참여 후기 평소 TDD나 클래스 설계에 관심이 있었습니다. 그래서 책을 통해 공부는 했지만, 이 지식을 이용해 구현한 코드가 제대로 된 구조인지 궁금해서 이 프로그램에 참여했습니다. (현재 회사에서는 코드 리뷰 문화가 없습니다 ㅎㅎ..) 과제가 총 4개 있고, 이를 구현하고 PR을 보내면 리뷰를 받는 방식으로 진행이 되고 있습니다. 리뷰는 현업자 분들에게 받기도 하고 해당 프로그램이 가격대가 나가는 편이라서 꼼꼼하게 리뷰 해주십니다. 인상깊었던 점은 캐시 관련해서 인상깊었습니다. 내용이 인상깊었다기 보다는 제 공부 태도에 대해 반성을 할 수 있었습니다. 자주 이용하는 클래스는 계속 새로 만들기 보다는 캐싱을 해서 이용하면 heap 공간을 절약할 수 있습니다. Java의 Integer에 캐싱을 이용하는 것은 알고 있.. 2024. 4. 20. 이전 1 2 3 4 5 6 ··· 24 다음