분류 전체보기 197

[책 리뷰][자기계발] 역행자

역행자라는 책은 흙수저에서 월 1억 자동 수익을 창출한 무자본 연쇄 창업가 자청의 책이다. 최근에 베스트셀러로 교보문고나 밀리의 서재 등에 많이 나와 읽게 되었다. 책에서 소개하고 있는 대표적인 주제는 바로 '역행자 7단계'이다. 저자가 일반적인 사람들이 자신의 인생을 순리대로 살아가는 '순리자'의 인생을 사는 것에 반해 저자가 어떻게 밑바닥에서부터 올라와 인생을 역행한 '역행자'의 삶을 살 수 있게 되었는지 각 단계별로 스스로 이론을 만든 내용이다. 1단계. 자의식 해체 2단계. 정체성 만들기 3단계. 유전자 오작동 4단계. 뇌 자동화 5단계. 역행자의 지식 6단계. 경제적 자유를 얻는 구체적 루트 7단계. 역행자의 쳇바퀴 저자는 위 7단계를 반복적으로 수행하면 누구나 돈으로부터 자유를 얻을 수 있고 ..

2022.07.09

[Kafka] Kafka란?

Kafka란? 1. Kafka란? 카프카는 분산 스트리밍 플랫폼으로, 실시간 스트리밍 데이터를 처리하는 목적으로 설계된 오픈 소스 분산형 pub-sub(게시-구독) 플랫폼이다. 2. Kafka는 언제 사용할까? 서로 다른 구성 요소 간의 안정적인 데이터 교환 데이터 처리를 위한 실시간 스트리밍 어플리케이션 요구 사항 변경에 따라 메시징 워크로드를 분할 데이터/메시지 재생에 대한 기본 지원 카프카는 여러 상황에서 사용되겠지만 우리 팀에서는 대표적으로는 워크로드를 분리할 때 많이 사용하고 있다. 예를 들어, 사용자가 어떤 음악을 좋아한다고 하트 표시를 했다고 하자. 실제로 데이터가 저장되는 것은 ‘사용자가 어떤 음악을 좋아하는가'에 대한 정보뿐이다. 그러나 해당 데이터를 이용해서 보여주어야 하는 곳이 여러 ..

개발 2022.06.18

2022년 1분기 회고

회고 2022년 1분기 회고 2022년 1분기가 끝나고, 이제 2분기가 시작된다. 이번 1분기에는 무엇을 했는가 돌아보면, 책을 읽은 기억밖에 없다. 작년 말에 밀리의 서재를 구독하고 밀리의 서재의 책과 오디오에 꽂혀서 일하는 시간 외에는 거의 책을 읽고 있다. 특히 오디오북은 아침에 일어나서 운동하면서, 저녁에 자기 전에 눈감고 등 내가 특별히 에너지를 소진하지 않고도 그냥 들을 수 있고 작가가 직접 책을 읽어주는 경우나 전문 성우가 책의 전문을 읽어주는 것들도 많다. (개인적으로는 성우가 전문을 낭독해주는 책을 선호한다.) 대신, 밀리의 서재에는 개발 서적은 전무하다 보니 종이책으로 읽고 있는데, 디자인 패턴 책과 클린 아키텍처 책은 스터디를 통해 읽은 것이고 최근에는 도커 쿠버네티스 책을 읽고 있다..

개인 2022.04.01

[Cloud] Docker란? (Docker의 개념과 기본 사용법)

1. 도커란? 도커는 컨테이너 가상화 기술을 사용한다. 그렇다면 가상화 기술은 무엇일까? 2. 가상화 기술 Container (컨테이너형 가상화) 각 컨테이너는 호스트 OS 커널과 바이너리 및 라이브러리를 공유한다. 컨테이너는 VM 보다 구성이 간단하여 훨씬 가볍다. VM (호스트 운영체제형 가상화) 각 가상 머신 내에서 고유한 게스트 운영체제가 실행된다. 해당 운영체제 위에서 어플리케이션이 동작하는 방식이다. 3. 간단하게 Docker 테스트 해보기 3.1. shell script 생성 #!/bin/sh echo "안녕 도커야!" 3.2. Dockerfile 작성 FROM ubuntu:16.04 COPY hellodocker /usr/local/bin RUN chmod +x /usr/local/bin/..

개발 2022.03.31

[Redis] Redis 설치(docker)와 redis-cli 사용법

레디스 캐시 캐시는 어떤 서비스의 응답속도가 느리거나 자주 호출되지만 데이터의 변경은 자주 발생하지 않는 경우, 응답 속도를 개선하기 위해 사용한다. 캐시에는 두 가지 종류가 있다. 아래와 같이 Local Cache와 Global Cache가 있는데 서버가 한대만 있을 경우에는 로컬 캐시를 사용해도 무방하지만, 일반적으로 MSA 도메인에, 트래픽이 많아 서버를 여러대로 분산시켜둔 경우에는 서버 간의 동기화 문제로 로컬 캐시는 사용하기 어렵다. 따라서 이런 경우에 Global Cache를 고려하게 되는데, Redis Cache는 대표적인 Global Cache 중 하나이다. Local Cache 데이터 조회 오버헤드가 없다 (속도가 빠름) 서버 간 데이터 일관성이 깨질 수 있다. (서버가 여러 개의 인스턴..

개발 2022.03.29

[Java][디자인 패턴] 24. 인터프리터 패턴 (Interpreter Pattern)

디자인패턴 [Java][디자인 패턴] 24. 인터프리터 패턴 (Interpreter Pattern) 인터프리터 패턴은 간단한 언어적 문법을 표현하는 패턴이다. 인터프리터 패턴이란? 프로그램을 여러 시스템 환경에서 구동하기 위해서는 추상화된 언어의 해석 과정이 필요하다. 이 과정에서 언어적 해석을 담당하는 것이 바로 인터프리터(해석자) 패턴이다. 인터프리터 패턴 구조 추상 구문 트리 인터페이스 (Abstract Expression) 종료 기호(Terminal Expression) 비종료 기호(Non-Terminal Expression) 해석기 정보(Context) 문장을 나타내는 추상 구문 트리(Client) 일반적인 상황에서 해석자패턴을 직접 구현하는 일은 거의 없을거라고 생각되고 적절한 예시 코드가 떠..

[Java][디자인 패턴] 23. 전략 패턴 (Strategy Pattern)

디자인패턴 [Java][디자인 패턴] 23. 전략 패턴 (Strategy Pattern) 전략 패턴은 객체 내부에서 해결해야 하는 목적을 알고리즘 객체로 분리 적용하는 기법이다. 실제 내부 동작을 외부 알고리즘 객체로 분리하여 유연하게 동작을 변경시킬 수 있다. 전략 패턴이란? 전략 패턴은 구조 그대로 사용하면서 캡슐화된 알고리즘으로 동작을 변경하는 행위 (전체 행위 변경) 전략 패턴은 행동 변경 시 조건문을 사용하지 않음. 알고리즘 캡슐화를 통해 조건문 없이도 원하는 행동으로 교체 가능하다. 하지만 알고리즘 객체가 교체된다는 점에서 실행 시 많은 수의 객체를 갖는다는 단점이 있다. 전략패턴은 다양한 알고리즘을 적용하여 처리할 때 매우 유용하여 다양한 경우에 사용된다. 전략 패턴 구조 전략 패턴 코드 1..

[Java][디자인 패턴] 22. 템플릿 메서드 패턴

디자인패턴 [Java][디자인 패턴] 22. 템플릿 메서드 패턴 템플릿 메서드 패턴은 메서드를 이용해 각 단계를 템플릿 구조화하고 행동을 구분한다. 템플릿 메서드 패턴이란? 템플릿 메서드는 공통된 로직을 분리하여 캡슐화한다. (붕어빵 틀 만들기) 공통 단계인 템플릿은 별도의 메서드로 작성한다. 이 때 공통 기능이 하위 클래스에서 오버라이딩 되지 않도록 final을 사용한다. 템플릿 메서드는 공통된 알고리즘을 정의하며, 공통된 로직을 처리하는 행동이다. 템플릿 메서드는 로직 전체의 구조를 변경하지 않고 일부분만 수정할 때 유용하다. 큰 틀의 공통된 로직만 처리하는 메서드와 변화된 작은 동작을 처리하는 메서드를 서로 분리한다. 이런 분리는 추상 클래스로 구현한다. 템플릿 메서드 패턴 예시 코드 구조 템플릿 ..

[Java][디자인 패턴] 21. 메멘토 패턴 (Memento Pattern)

디자인패턴 [Java][디자인 패턴] 21. 메멘토 패턴 (Memento Pattern) 메멘토 패턴은 상태의 객체를 저장하여 이전 상태로 복구하는 패턴이다. 메멘토 패턴이란? 메맨토 패턴은 중간 매개체를 통해 객체의 상태를 다른 객체에 저장했다가 복원하는 방법을 사용한다. 메멘토 패턴은 객체의 상태를 관리한다. 객체의 상태를 저장하고, 저장된 상태의 객체로 복원한다. 메멘토 패턴 구성요소 원조본(originator) 케어테이커(caretaker) 메멘토 패턴 코드 1. 상태 클래스 (TextWindowState) public class TextWindowState { private String text; public TextWindowState(String text) { this.text = text;..

[Java][디자인 패턴] 20. 상태 패턴 (State Pattern)

디자인패턴 [Java][디자인 패턴] 20. 상태 패턴 (State Pattern) 상태 패턴은 조건에 따른 별개의 동작을 제어문으로 사용하지 않고 대신 객체를 캡슐화하여 독립된 동작으로 구분한다. 상태 패턴이란? 각각의 함수 형태로 구별하는 것과 달리 객체로 동작을 분리한다. 객체의 상태에 따라 위임하는 객체를 변경한다. 상태 패턴에서는 함수 형태가 아니라 서브 클래스 형태로 분리한다. 각각의 상태를 객체로 캡슐화하기 때문에 클래스 파일이 늘어난다는 단점이 있으나 상태 패턴을 이용하지 않고 수많은 조건문을 사용하는 것보다는 유연하게 확장할 수 있다. 상태 패턴은 행동 패턴으로 분류되고 객체 내부 상태에 따른 동작 객체를 결정한다. 상태별로 분리된 동작 객체는 독립적이며, 각 상태값에 따라 국지화된 객체..