반응형

이 책은 마이크로서비스에 대한 이론적 지식과 실습 프로젝트를 통해서 실제 마이크로서비스를 구현해볼수 있는 내용을 담고 있다. 두가지의 서비스를 각각의 다른 언어로 설계부터 개발, 릴리즈, 배포까지 프로젝트의 한 사이클을 담아놨다. 저자가 말했듯이 실제 production 에 반영을 하기에는 부족하긴 하지만 마이크로서비스를 경험해 보기에는 충분한 예제이다. 

마이크로 서비스는 굉장히 주목받고 있는 아키텍쳐이긴 하지만 실제 구현하기는 쉽지 않다. 우선 무엇보다도 뭐부터 시작해야할지가 가늠이 안간다. 모놀리스 아키텍쳐에 익숙한 개발자에게는 어느정도를 기능단위로 나눠야 되는지 구분하는게 가장 어렵게 느껴진다. 

이 책에서도 서비스 경계 설정에 대해서 다음과 같은 고려사항들을 언급해 놓았다. 

- 느슨한 결합
  - 서비스를 변경해도 다른 서비스에 영향을 주지 않는다.
  - 독립적인 배포가 가능해진다.
- 높은 응집력
  - 하나의 기능만 담당하기 때문에 응집력이 높아진다. 
- 비즈니스 기능과 연결
- 도메인 주도 설계
  - 테이블 기준이 아닌 업무 도메인 기준으로 설계가 되어야 한다.

또 한가지 중요한 요소중 하나는 데이터 이다. 

마이크로서비스의 데이터 공유
- 물리적인 데이터베이스 클러스터 공유는 가능하다
- 여러개의 마이크로서비스가 동일한 논리적인 테이블 공간과 데이터를 수정하지 않아야 한다.


여기에서 물리적인 데이터베이스 클러스터 공유가 가능하다는 말은 예를들어 같은 데이터베이스를 사용하되 스키마는 달라야 한다정도로 이해를 했다. 

다음은 개발자 워크스페이스에 대한 내용과 가이드 라인이다. 가이드 라인 같은 경우는 책에서 제시하는 환경에 의존적인 부분이 있긴 하지만 알아두면 좋을것 같다.

표준을 수립할 때에는 기술적인 '방법' 과 '무엇'을 제시하기 전에 사람들이 프로세스의 '이유'에 대해 공감할 수 있어야 한다.

  • 짧은 시간 내에 코드 설정이 가능해야 한다.
  • 새로운 마이크로 서비스는 빠르고, 쉽고, 예측 가능하게 만들어야 한다.
  • 품질 관리는 자동화되어야 한다.

개발자 경험을 위한 10가지 워크스페이스 가이드라인

  1. 도커를 유일한 종속성으로 만든다.
  2. 실행환경이 원격인지 로컬환경인지는 중요하지 않다. -> 환경에 관계 없이 실행 가능 해야한다.
  3. 서로 다른 기술 스택의 워크스페이스를 준비한다.
  4. 단일 마이크로 서비스를 실행하는 것과 여러개의 하위 시스템으로 구성된 마이크로 서비스를 실행하는것은 간단해야 한다.
  5. 가능하면 데이터베이스는 로컬에서 실행한다. (도커 사용)
  6. 컨테이너화 가이드라인을 구현한다.
  7. 데이터베이스 마이그레이션을 위한 간단한 규칙을 정한다.
    • 데이터베이스에 대한 변경사항은 마이그레이션 스크립트에 코드화 되어있어야 한다.
  8. 실용적인 테스트 자동화 방법을 정한다.
  9. 분기 및 병합 규칙을 정한다. -> 브랜치 관리
  10. 공통사항은 makefile 에 코드화 한다.

 그리고 이 책에서는 프로젝트코드들이 있다. 환경설정부터 시작해서 필요한 리소스나 툴들의 사용법들이 차례차레 나온다. 사용되는 툴의 종류도 다양하다. 우선 클라우드는 AWS 를 사용하고 Docker, Terraform, Github, kubernetes, Node.js, Argo CD 등이 있다. 

책에 그림이나 코드들이 다 나와있긴 하지만 처음부터 끝까지 따라하기는 쉽지는 않을것 같다. 그래서 책에 나온 툴들에 대해서 자세히 알 필요는 없지만 기본적인 기능을 조금이라도 알고 있다면 프로젝트를 진행하는데 더 수월할 것이다. 

여러번 말했지만 마이크로서비스로 가는 길은 쉽지 않은 길이다. 하지만 이론부터 차근차근, 작은것부터 점진적으로 변화를 시켜나간다면 실패를 줄여 나갈수 있을 것이다. 그리고 이책을 통해서 전체적인 시스템이 어떻게 구성되는지, 그리고 무엇이 필요한지 기본적인 지식을 습득한다면 큰도움이 될것이다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형
반응형

 

## 공백으로 input 값 받는 방법
data = list(map(int, input().split()))

# 결과
1 2 3
[1, 2, 3]

파이썬으로 입력값을 받을때 위와 같이 코드를 작성하면 간편하다. (주로 코딩테스트의 입력값 받을때 사용하면 된다.)

입력값이 공백이 아닌 콤마(,) 로 구분될 경우 split(",") 으로 변경해서 코드를 작성하면 된다.

 

728x90
반응형
반응형

배열을 초기화 시에 아래와 같이 사용하면 유용하게 사용가능 하다. 

# index가 필요 없는 반복문일 경우 _ 사용, 배열 초기화시 사용
array = [[0] * 3 for _ in range(10)]
print(array)

# 결과값
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

_ 는 for 문 반복시 index 가 필요없는 단순 반복을 할 경우에 사용한다.

 

728x90
반응형
반응형

이 책을 읽기전에 저자의 알고리즘 동영상 강의를 몇번 본적이 있었다. 그래서 이 책이 나왔을때 어떤 내용으로 구성이 되어있을지 궁금했다. 그런데 마침 이렇게 한빛미디어 나는 리뷰어다를 통해서 리뷰를 작성하게 되었다.

- PART 01

처음에는 코딩 테스트, 또는 알고리즘 문제 풀이를 어떻게 준비를 해야 하는지 사전 지식을 알려준다. 코딩을 위한 준비라든지 최근 몇년간 코딩테스트 유형들을 설명해준다. 그리고 취업관련 프로세스나 준비 방법들도 간단히 소개해 주고 있다.

- PART 02 ~ PART 03

PART02 와 PART03 에서는 본격적으로 코딩테스트를 위한 이론과 기출을 풀어볼수 있다. PART02 에서는 주요 알고리즘에 대한 설명과 연관된 문제를 풀어볼 수 있다. 알고리즘 관련된 책들이 비슷한 구성을 가지고 있다고 생각이 되는데 각각의 특징은 설명을 어떻게 해주냐인것 같다. 이 책은 그런점에서 이해하기 쉽게 설명을 해주고 있다. 그리고 그림이나 음영을 적절하게 써줘서 읽어보는데 지루하지 않았다.

- PART 04

이 책의 코드들은 파이썬으로 되어있다. 그렇기 때문에 파이썬에 대해서 알 필요가 있는데 모른다고 해서 책을 못읽는 것은 아니다. 이렇게 부록에 파이썬 문법들을 넣어줬다. 물론 파이썬에 대한 모든 내용들이 들어간것은 아니지만 코딩테스트 문제를 풀기 위해서 이정도 알고 있으면 충분히 문제 푸는데에는 문제가 없을것이다. 그리고 코딩테스트 코드 작성시 유용하게 사용되는 패턴들도 있어서 참고하면 문제 푸는데 많은 도움이 될것같다.

그리고 앞에서 설명했던 알고리즘들 이외에도 코딩테스트에 유용한 알고리즘들이 부록에 많이 담겨져 있다. 우리가 수학으로 배웠던 내용들이 주로 포함되어 있다. 나같은 경우에도 실제로 코딩테스트 문제에서 알고 있으면 쉽게 풀었지만 막상 모르고 풀면 코드 작성하기가 힘들었던 문제 유형들이다. 

- 온라인 강의

마지막으로 이 책의 온라인 강의를 볼수 있다.  요즘 책들은 거의 온라인 강의를 포함하는 경우가 많은데 이 책도 이렇게 저자의 온라인 강의를 볼 수 있다. 책은 책대로 읽고 온라인 강의도 본다면 이해하는데 도움이 될것이다. 이 책 보기전에도 몇번 동영상 강의를 봤었는데 저자분이 목소리가 낮고 차분하고 과장되지 않아서 귀에 더 잘 들렸다. 

- 마무리

코딩 테스트라는게 아무래도 이론만 가지고는 결과를 보는건 거의 불가능한 시험이다. 얼마나 많이 풀어보고 다양한 유형의 문제를 경험해봤는지가 가장 중요하다고 생각한다. 그렇다는건 결과적으로 내가 많이 문제를 풀어봐야 한다.어떤 알고리즘책을 읽든 그것은 변하지 않는다. 하지만 처음 코딩테스트를 준비하거다 기본부터 파이썬으로 준비를 하고 싶은 분들에게는 한번쯤 읽어보면 꼭 도움이 될거라 생각이 든다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형
반응형

우리는 매일 매일 핸드폰을 통해서, 컴퓨터를 통해서, 그리고 기타 다른 도구들을 통해서 쏟아지는 데이터의 홍수 시대에 살고 있다. 그리고 우리는 그 데이터들을 다듬어서 많은 곳에 사용을 하고 있다. 

여기에서 중요한 점은 데이터를 누구에게, 어떤 형태로 보여줘야 하는지 결정하는 일이다. 쌓아 놓은 데이터들을 그냥 보여줄수는 없는 일이다. 이 책에서는 바로 데이터를 어떻게 보여줘야 하는 지에 대한 내용을 담고 있다.

우리는 데이터를 누군가를 설득하기위한 근거 자료로 많이 사용을 한다. 결국 누군가를 설득하고 어떤 결과를 유도하기 위해 데이터를 보여주지만 그것만으로는 만족한 결과를 얻을수가 없다. 그래서 우리가 읽는 소설이나 드라마에 기승전결이 있듯이 데이터에도 이러한 이야기가 필요하다. 우리가 가지고 있는 데이터들이 좀더 극적으로 보여주기 위해서, 또는 설득하려는 사람의 마음에 조금이라도 각인 시키기 위해서는 기억에 남을 만한 이야기 구상이 필수적이다. 

또한, 데이터 하나를 보여줌에 있어서 어떤 형태, 또는 어떤 그래프로 표현을 할지, 그리고 어떤 단어나 문장을 선택할지에 대해서도 꼼꼼히 생각을 해야 한다. 

하나의 차트를 설명하는 데에도 이렇게나 많은 표현들이 존재한다. 내가 사용하는 단어들 또는 문장들이 표현에 맞는지 그리고 좀더 나은 표현들은 없는지 참고해 볼 수 있다. 

이렇게 이 책에는 데이터를 구성하는 방법, 표현하는 방법, 설명하는 방법들이 잘 정리 되어있다. 데이터에 대한 내용 뿐만아니라 발표하는 방법 또는 프리젠테이션 구방 벙법에 대해서도 설명되어 있으니 필요시 참고하면 될것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형
반응형

NGINX에 대한 내용은 사용할 때에만 잠깐 인터넷으로 설정이라든지 방법만 찾아 봤을 뿐 책을 읽어보는 건 처음이다.  고급 기술을 활용한다기 보다는 상황에 맞게 설정만 하고 끝나는 경우가 많아서 깊게 공부해보려는 생각은 못했던것 같다.

최근 읽어본 책들을 보면 사례를 중심으로 설명하는 책들이 많이 있었는데 이 책도 사례 중심으로 내용을 설명하고 있다. 

그중에서도 내가 관심있게 본 내용들은 인증과 보안제어 챕터이다.

인증이나 보안쪽은 어떤 환경에서든지 빠지지 않는다. 그런데 막상 인터넷을 찾아보면 방법 자체가 맞는 방법인지 알 길이 없다. 그렇다면 도뮤먼트를 읽는 수밖에는 없는데 영문으로 되어있는 도큐먼트를 빠르게 이해하기는 쉽지 않다. 그래서 이 책에 나온 여러가지 상황에 따른 사용 방법을 알고 있다면 실제 Nginx를 사용해서 운영중인 개발자들에게 많은 도움이 될것이다. 

주어진 상황에 대한 해결 방법을 위와 같이 제시해 준다. 그리고 "논의" 라는 항목을 따로 둬서 좀더 생각해야 하는 것들에 대해서 설명을 해준다. 그저 "해결" 만 하고 끝나는게 아니라 "논의" 를 통해서 이론 적인 내용이라든지, 주의 사항들을 상세히 알려주는게 이 책의 큰 장점이라고 생각이 된다. 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형
반응형
nohup은 HUP(hangup) 신호를 무시하도록 만드는 POSIX 명령어이다. HUP 신호는 전통적으로 터미널이 의존 프로세스들에게 로그아웃을 알리는 방식이다. 일반적으로 터미널로 향하는 출력은 별도로 넘겨주기 처리를 하지 않았을 경우 nohup.out이라는 이름의 파일로 출력된다.

(출처 : https://ko.wikipedia.org/wiki/Nohup)

다시 말해 nohup 명령어는 터미널을 종료해서 세션이 끊어지더라도 계속 동작을 할수 있게 해준다. 

사용방법

nohup 프로세스 &

nohup.out 파일 생성하지 않으려면 

nohup 프로세스 1>/dev/null 2>&1 &

1>dev/null 은 표준출력 사용하지 않는다는 의미
2>&1 표준 에러를 표준 출력과 같게 한다는 의미

참고사항

표준입력 = 0
표준 출력 = 1
표준 에러 = 2

> :  파일이 없으면 새로 만들고 있으면 덮어쓴다.
>> : 파일이 없으면 새로 만들고 있으면 끝에 덧붙인다. 

 

728x90
반응형

'Development > Linux' 카테고리의 다른 글

xargs 명령어  (0) 2024.01.17
[리눅스 명령어] arp  (0) 2021.11.16
[리눅스 명령어] 디스크 관련 명령어  (0) 2021.06.04
파일 찾기, 파일 날짜별 삭제  (0) 2021.05.21
[리눅스 명령어] IP 관련 명령어  (0) 2021.03.08
반응형
du 디렉토리명

디렉토리와 모든 하위 디렉토리 용량을 표시해준다.

옵션
-s : 선택한 디렉토리의 용량을 보여준다.
-h : 용량 단위를 알기 쉽게 보여준다.
-d : 숫자 숫자만큼의 하위디렉토리까지 출력한다.
-a : 파일 용량도 출력한다.

df -h

디스크의 사용량을 알 수 있다.

 

728x90
반응형

'Development > Linux' 카테고리의 다른 글

[리눅스 명령어] arp  (0) 2021.11.16
[리눅스 명령어] nohup  (0) 2021.06.09
파일 찾기, 파일 날짜별 삭제  (0) 2021.05.21
[리눅스 명령어] IP 관련 명령어  (0) 2021.03.08
dpkg lock 에러  (0) 2020.09.17
반응형

최근에는 처리해야 할 서비스들을 도메인별로 나누어서 마이크로 서비스로 구축하는 경우가 많아졌다. 그러다 보니 서비스들 간에 서로 통신을 해야 할 일들이 많아지게 되고 이런 처리를 어떻게 해야 할지 고민이 많아졌다. 그중 하나의 방법으로 이벤트 기반으로 정의를 해서 정보를 가져올 수 있는 기법들이 나오게 되었다. 

먼저 이벤트를 정의 를하고 프로듀서는 이벤트를 생성하게 된다. 그리고 그 이벤트를 필요로 하는 컨슈머들은 해당 이벤트를 소비함으로써 프로세스를 처리하게 된다. 간단하게 말하긴 했지만 이벤트를 생산하고 소비하는 과정에서 처리해야 할 일을이 많다. 특히 정상처리 상태에서는 괜찮지만 비정상적으로 처리가 잘못될 경우에 대한 생각들을 많이 해야 한다. 

이 책은 이벤트 기반 마이크로 서비스에 대해서 무엇이 필요하고 각각은 어떤 역할을 해야 하는지 알려주고 있다. 각 레이어 별로 구간구간 처리에 대한 방법, 이론적인 내용들을 잘 설명해 주고 있다. 

하지만 읽으면서 느꼈던 점은 아무래도 이론적인 내용들이 많다보니 이런 이벤트 처리에 대한 경험이 있는 상태에서 읽으면 더 도움이 될것 같다는 생각이 들었다. 그저 막연하게 마이크로 서비스가 무엇이다, 이벤트가 무엇이다 정도 알고 있다면 내용을 이해하기가 좀 어려울수도 있을것 같다. 입문자도 읽을수 있다고는 하지만 내용이 머릿속에 잘 그려지지 않았다. 그래서 프로그래밍 레벨에서 관련 내용을 구현해보거나 운영중인 사람들이 읽기에 더 적합한것 같다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형

+ Recent posts