220815~220821_TIL

JUNHO YEOM·2022년 8월 15일
0

TIL

목록 보기
8/9

220815_TIL

ELK Stack에 대해서 배웠다.
사용자에게 웹에서 빠른 검색 결과를 제공하기 위해서 Redis와 Elasticsearch DB를 이용할 수 있다.
자주 검색되는 결과는 메모리 기반의 DB인 Redis에 저장하고,
다른 검색어들은 Tokenizing하여 역인덱싱 방법으로 Elasticsearch에 저장하는 방법을 사용할 수 있다.

사용자가 검색 요청을 하면 Redis에서 먼저 결과를 조회하고, 결과 값이 있으면(Cache-Hit) 바로 결과를 반환하고, 결과 값이 없으면(Cache-Miss) Elasticsearch에서 값을 찾아서 결과를 반환한다.
이때, 다시 검색하는 키워드가 빠르게 반환될 수 있도록 사용자에게 반환하기 전에 Redis에 저장해준다.

사용자에게 최적의 서비스 환경을 구축하기 위해서는 각 분야에 맞는 DB를 적절히 사용하는것이 중요 할것 같다.

220816_TIL

Elasticsearch의 CRUD 방법에 대해서 배웠다.
또한, Elasticsearch에서 검색을 위해 Text를 분해하는 과정인 Text Analysis에 대해서 공부했다.
Analyzer는 Character filter, Tokenizer, Token Filter로 이루어진다.
이후 Mapping을 이용하여 Analyzer를 적용해 줄 수 있다.
자주 사용되는 Analyzer는 nGram Analyzer이다.
단어를 세부적으로 잘라서 Token으로 저장하는 방식이다.
이를 통해서 단어의 일부만 검색어에 포함하여도 검색이 가능하게 할 수 있다.

220817_TIL

마이크로 서비스에 대해서 배웠다.
큰 규모의 서비스를 운용하게 될때 서비스를 나누지 않으면, 빌드, 배포에 많은 시간이 필요하게 되고,
오류가 발생했을때 서비스 전체가 멈추는 문제가 발생하게 된다.
마이크로서비스로 서비르를 나누게 되면 해당 서비스의 서버 문제는 해당 서비스에서만 발생하고,
전체 서버는 계속 서비스를 제공할 수 있다.
또한, 서비스에 따라 가장 적절한 언어와 프레임워크를 선택하여 만들 수 있기 때문에
다양한 개발자 채용이 가능하다.
하지만, 서비스의 규모를 고려하지 않고 마이크로서비스를 진행하게되면 오버엔지니어링이 될수 있고,
다양한 기술스택을 가진 개발자와, 마이크로서비스에 대한 지식과 업무 능력이 있는 개발자를 채용해야 하기 때문에 채용의 난이도가 올라갈 수 있다.

220818_TIL

Test환경에 대해서 배웠다.
테스트의 종류에는 크게 단위 테스트, 통합테스트, E2E테스트가 있는데
단위 테스트는 버튼 클릭과 같은 개별기능의 단위 테스트이고,
통합테스트는 여러 기능을 테스트하면서 서로 충돌이나 오류가 발생하지 않는지 확인하는 테스트이다,
E2E 테스트는 시나리오가 있는 테스트로써, 사용자의 이용 행동을 실제로 테스트 해보는 테스트이다.
테스트를 위한 라이브러리로는 Node환경에서 Jest를 사용할 수 있다.
jest는 nest 프레임워크에 기본적으로 포함되어 있으며, 서비스의 규모가 커질수록 Test Driven Development의 개념이 중요해지며 작성하는 방법에 대해서 충분히 배워둬야 겠다고 생각했다.

220819_TIL

GCP를 이용하여 배포를 진행해봤다.
배포를 위한 환경은 크게 4가지로 분류되는데
로컬 환경에서 사용하는 local,
개발 환경에서 사용하는 dev,
배포 환경에서 사용하는 prod,
업데이트를 위해 사용하는 stage 등의 환경이 있었다.
배포를 위해서, VM 머신을 대여하고, VM에 내가 작성한 코드를 넣어준후 방화벽을 해제해주었다.
내부 IP와 외부 IP 두가지 모두 방화벽이 있는데
외부 IP는 서비스 이용 고객들이 접속할 수 있또록 열어두고, DB와 같은 중요 정보가 담긴 경우는 내부 IP로만 연결하여 원하지 않는 접근을 차단할 수 있었다.

220820_TIL

0개의 댓글