2019-12-16 TIL

  1. 엘라스틱서치
  2. 도커
  3. DDD

    • Entity
    • Value Of Object

5F

1.Fact

오늘은 방대한 양의 기술들을 접해보았다. 첫번째로 세금도둑 지도를 만들면서 Spring을 cotlin언어로 사용했는데, 이전에 배웠던 spring에 대해서 복습하게 되는 시간이었다. 어서 빨리 프로젝트를 하면서 이전에 내가 공부했던 내용들을 다시 복습을 해야할탠데.. 그전에 e2e테스트를 돌리기 위한 프런트를 공부해야한다. 두번째로는 DDD에서 나오는 Entity와 value of object이다. entity는 identification이 존재해서, 객체 지향의 오해와 사실에서 나오는 엘리스를 든 예처럼, 약을먹어서 키가 크던 작아지던, 몸무게가 늘던 줄던 엘리스가 엘리스라는것은 변하지 않는다. 이런 의미에서 entity는 동일성과 연관성이 있다. 다음은 value of object이다. 이전에 아샬님께서 화폐에 대한 객체로 예를 들었었는데, 동일한 1달러 화폐는 여러개 존재할 수 있다. 합쳐질 수도 있어서 1달러가 5개 있다면 5달러가 될 수 있다. 그래서 동등성에 연관이 있다. 자바로 표현하자면, entity는 ==이 되겠고, value of Object는 toEqual이 될 수 있다. 다음은 elastic search에 대해 공부한 것을 정리 해보고자 한다. elasticsearch는 리얼타임 분산 스토리지, 서치 and 분석 엔진이고, 여러 방법으로 사용이 가능하다. 우리가 이것을 사용하기로한 이유는 위치 기반으로 질의를 할 수 있기 때문이다. 엘라스틱 서치 말고도 몽고디비 또한 비슷한 기능을 제공하지만, PP를 진행하는 팀원분의 추천으로 이번에 사용하게 되었다. 우리는 엘라스틱 서치를 이용하기 위해서, 도커를 사용하기로 결정했는데, 그러면서 도커가 하는 기능에 대해서 살짝 공부를 해보았다. 도커는 자신들의 목적을 공식 홈페이지에 아주 간단하고 직관적으로 설명해놓았다. ‘Debug your app, not your environment’ 라고 설명하고 있는데, 결국 객체지향이나 클린코드에서 중요하게 생각하는 추상화가 적용된 기술이라고 느꼈다. 개발 환경을 신경쓰지 않도록 하기 위한것이 목적이라고 생각이 들었다. 내가 이번에 공부한것과 이전에 공부했던 내용을 글로 정리해 보자면, 도커는 컨테이너 기반 기술이다. 홈페이지에 컨테이너는 어떠한 환경에서도 코드와 의존성들을 패키지로 쉽고 빠르고 신뢰할 수 있게 실행 할 수 있게 해준다고 설명이 되어져 있다. 컨테이너를 사용한다면 어떠한 컴퓨터 환경에서도 동일한 특정 환경으로 만들어 줄 수 있고, 여러 사람들이 동일한 개발환경에서 테스트를 진행할 수 있으며, 실제로 코드가 실행되는 환경과 동일한 개발환경을 만들어 테스트를 진행할 수 있는 장점이 있다. 또한 도커허브라는 곳이 존재해서, 필요한 이미지를 쉽게 받아와서 사용할 수 있으며, 자신이 만들수도 있다. 이렇게 도커 이미지들을 docker compose를 사용하여 동일한 조건의 환경을 코드로 설정해줄 수 있다. 도커 이전에는 virtual machine을 사용했는데, 가상머신 같은 경우엔 밑의 사진과 같이 host OS가 있고, 각 vm마다 guest OS를 올리게 되서 굉장히 무거운데 반면, 도커는 리눅스 기반으로 docker를 사용하여 host OS를 함께 사용하면서 더 작은 단위의 application을 실행하기 때문에 자원소모가 적고, 가상머신은 매번 os를 올리는데 시간이 오래 걸리는 반면, 컨테이너는 그에 비해 굉장히 가볍고 빠르다는 장점이 있다. vm container

2.Feelings

오늘 굉장히 많은 분야의 기술을 공부했다. 이전에는 빨리 공부해서 익힌다는 강박관념에 사로잡혀서 뭔가 공부해도 잘 안되는 느낌이었는데, 여러번 보고 동일한 것을 다시 공부해보게 되면서 익숙해 짐을 느꼈다. 공부할 양은 많다. 너무 압박 받지 말고 그냥 즐기면서 천천히 내 페이스대로 공부를 해야겠다. 공부할 양 어짜피 많다 그냥 즐기면서 긍정적으로 재미있게 하자. 여러번 보면 어짜피 이해 된다.

3.Findings

짝프로그래밍은 정말 좋은 시스템이라는 것을 다시 깨닳았다. 굳이 프로그래밍을 할때만 그런게 아니라 같이 공부하는것은 정말 좋은 방법인것 같다. 동일한것을 공부하고, 자신의 의견을 공유하면서 개념을 잘 정리할 수 있고, 다른 관점에서 다른 정보를 공유하기 때문에 더 이해가 잘되는것 같다.

4.Future Action Plan

오늘은 알고리즘 문제를 풀지 못했는데, 내일은 저녁에 코딩 도장에 가지만, 그래도 아침에는 쉬운 문제를 복습을 반드시 해야겠다. 그리고 이후에 위키처럼 공부 했던 내용들을 정리해서 기록해둬야겠다.

5.FeedBack


Written by@Zero1
This blog is for that I organize what I study and my thinking, feeling and experience.

GitHub