본문 바로가기

전체 글314

Kubernetes 이해하기 - 1 (with. minikube) *개인 공부를 위한 포스팅으로, 잘못된 부분이 있는 경우 댓글로 피드백 해주시면 감사하겠습니다. 참고 링크: kubernetes document 목표 쿠버네티스 클러스터가 무엇인지 배운다. Minikube가 무엇인지 배운다. 온라인 터미널을 사용해서 쿠버네티스 클러스터를 시작한다. 쿠버네티스는 single unit으로 연결된 컴퓨터처럼 동작할 수 있도록 컴퓨터들의 클러스터들을 조정하는 역할을 한다. 컨테이너 단위로 애플리케이션을 띄우고, 각각의 머신을 개별적으로 조작하지 않아도 된다. 이를 위해서는 애플리케이션의 컨테이너화가 필요하다. 쿠버네티스는 애플리케이션 컨테이너간의 스케줄링, 분산 등을 효과적으로 자동화한다. 그럼 어떻게 애플리케이션을 컨테이너화하고 클러스터 구성을 할까? 클러스터 클러스터는 두가.. 2022. 10. 10.
[개발노트] 기본적인 의존성(dependency) 관리 법칙 우아한테크세미나를 듣고 일부 기록하였습니다. Dependency(의존성) 클래스 의존성 패키지 의존성 클래스 의존성 종류 연관 관계 : 영구적인 협력 class A { private B b; } 의존 관계 (의존성X) :일시적으로 협력 파라미터에 특정 타입이 나온다. 리턴타입에 특정 타입이 나온다. 메서드 안에서 특정 타입의 인스턴스 생성 class A { public B method(B b) { return new B(); } } 상속 관계 구현이 바뀌어도 영향 class A extends B { } 실체화 관계 인터페이스가 바뀌었을 때 영향 class A implements B { } 패키지 의존성 패키지에 포함된 클래스 사이의 의존성 클래스 열었을 때 import에 다른 패키지 있으면 depende.. 2021. 10. 21.
[책] 객체지향의 사실과 오해 - 3 객체지향의 사실과 오해를 읽고 정리한 글입니다. 6. 객체 지도 어떤 사람이 길을 물어본다면 첫번째 해결책은 '기능적이고 해결책 지향적인 접근법'이 있다. 직접 길을 알려주는 것이다. 단계별로 상세히 설명할 수 있지만, 재사용이 불가능하다. 두번째 해결책은 지도를 이용하는 것이다. '구조적이고 문제 지향적 접근법'이며, 길을 찾을 수 있는 구조를 제공한다. 전통적인 소프트웨어 개발 방법은 길을 알려주는 것과 유사하며, 객체지향 개발 방법은 기능을 종속시키는 지도의 방법과 유사하다. 설계의 두가지 측면 - 구조, 기능 설계의 목적은 나중 설계를 허용하기 위해, 그리고 변경에 소요되는 비용을 낮추기 위해서이다. 이 목적을 위해 구조, 기능 두 가지 측면을 고려한다. 구조 측면의 .. 2021. 10. 12.
[책] 객체지향의 사실과 오해 - 2 객체지향의 사실과 오해를 읽고 정리한 글입니다. 1, 2장에서 개괄적인 틀을 설명해주었다면, 3,4,5은 좀 더 디테일하게 객체간의 협력, 그리고 협력을 위한 준비물들(역할, 책임, 메시지)을 설명해준다. 역할, 책임, 메시지에 대한 설명을 통해 OOP의 특징인 다형성, 캡슐화를 더 쉽게 이해할 수 있었다. 이러한 특징을 잘 활용한다면 확장성, 재사용성이 좋은 시스템 설계가 가능함을 알려주며, 디자인 패턴, TDD를 활용하면 왜 더 좋은지를 알려준다. OOP에 대해 알아야한다는 의무감에 주먹구구식으로 머릿 속에 우겨넣었던 과거와 다르게, 왜 설계에는 확장성과 재사용성이 중요하며 OOP가 사용되는지 자연스럽게 이해할 수 있어서 유독 재미있게 읽었던 장이었다. 목표 개념(concept)과 타입에 대해 이해하.. 2021. 10. 10.
[책] 객체지향의 사실과 오해 - 1 차근차근 비유법을 써서 설명해주는 책이었다. 객체지향의 개념에 대해 좀 더 직관적으로 이해할 수 있는 계기가 되었다. 중요하다고 생각되는 부분들을 요약했는데, 두고 두고 객체 지향에 대한 개념이 흔들릴 때마다 봐야겠다. 목표 코드를 담는 클래스의 관점에서 메시지를 주고받는 객체의 관점으로 사고 전환 "행동이 상태를 결정한다" 를 이해하자. 1. 협력하는 객체들의 공동체 기능을 구현하기 위해 객체들은 협력한다. 책에서는 협력의 과정을 "커피를 주문하는 과정"을 예시로 아주 상세하게 풀어준다. "커피를 주문하는 과정"은 대략 이러하다. 손님이 캐시어에게 커피를 주문한다. 캐시어가 바리스타에게 커피 제조를 요청한다. 바리스타는 커피를 완성하여 캐시어에게 건내준다. 캐시어는 커피를 완성하여 손님에게 준다. 역할.. 2021. 10. 9.
[Spring] RestTemplate과 WebClient 이해하기 Intro 외부 API 정보를 요청하려면 어떻게 해야할까? 가장 흔하게 사용하는 방식은 Http Client 이다. Web으로 API를 호출하기 위해 사용하는 Http 모듈 중 하나인 Spring WebClient에 대해 알아보려 한다. RestTemplate vs WebClient 기존에 많이 사용한 RestTemplate과 가장 큰 차이점은 RestTemplate는 Blocking이고, WebClient는 Non-Blocking 방식이라는 것이다. (Blocking은 호출되는 함수가 호출하는 함수에게 제어권을 넘기지 않고 대기하게 한다. Non-Blocking은 제어권을 바로 넘긴다. 관련 포스팅은 여기를 참고) 현재 RestTemplate는 Spring 5.0 이후부터 Deprecated되었고, W.. 2021. 9. 12.