ETC 29

redis의 대체제, valkey (redis vs valkey)

0. 개요요즘 redis의 대체제로 떠오르고 있는 valkey를 소개해보려고 합니다.redis는 오랜 시간 동안, cache의 대명사라해도 과언이 아닐 정도로 굳건하게 자리를 지키고 있었습니다.그런데 도대체 왜 redis를 대체제가 생겨난걸까요? 1. redis licenseredis의 license는 그동안 아무나 무료로 가져다 쓸 수 있도록 오픈되어 있었습니다.그런데 2024년 3월에 license 정책을 변경하였습니다.https://redis.io/blog/what-redis-license-change-means-for-our-managed-service-providers/ What Redis’ License Change Means for Our Managed Service Providers - R..

ETC/Redis 2025.01.05

[elasticsearch] 클러스터

엘라스틱서치는 클러스터로 운영을 하는 구조입니다.엘라스틱서치는 노드를 여러 대 띄우고, 노드들을 연결하여 클러스터로 구성할 수 있습니다.노드들은 역할도 나눌 수 있도록 되어 있습니다.노드 종류는 아래의 총 11가지로 나뉘어집니다.https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#node-rolesmasterdatadata_contentdata_hotdata_warmdata_colddata_frozeningestmlremote_cluster_clienttransform노드 설정은 elasticsearch.yaml에서 아래와 같이 node.roles 설정을 추가하면 노드의 역할을 지정할 수 있습니다.node.ro..

ETC/Elasticsearch 2024.11.10

[elasticsearch] 데이터 저장

elasticsearch는 data storage로써, 데이터를 저장하는 것이 기본이며 저장된 데이터 중에 검색을 빠르게 할 수 있는 검색엔진입니다.오늘은 elasticsearch가 어떻게 데이터를 저장하는 지 알아보도록 하겠습니다. 우선 RDB를 사용하면, table과 column을 활용하여 데이터의 구조를 선언해서 사용하게 되어있습니다.elasticsearch는 유사하게 index와 field로 구성할 수 있습니다.각 field는 string, integer, boolean 등의 값을 저장할 수 있으며 검색 전략에 따라서 어떤 토크나이저를 사용할 지 설정할 수 있습니다.토크나이저는 추후에 좀 더 자세하게 따로 포스팅해보도록 하겠습니다. RDB와 elasticsearch를 비교해보면 아래의 표와 같이 ..

ETC/Elasticsearch 2024.10.27

[elasticsearch] why elasticsearch?

elasticsearch에 대한 글들을 정리해보려고 하는데, 첫 게시글로 왜 elasticsearch를 사용하는지에 대해서 정리해보려고 합니다.보통 백엔드 개발을 하다보면, elasticsearch를 처음부터 도입하진 않습니다.처음엔 일반적으로 RDB(Relational Database)를 많이 채택하고 서비스를 개발하는데요.서비스가 점점 커지고 검색으로 인한 부하가 커지면서 시스템이 위협?을 받게되면 검색엔진을 도입하게 되고 elasticsearch를 많이 선택하게 됩니다.elasticsearch가 그럼 왜 검색이 빠른지 알아봐야겠죠?elasticsearch는 엘라스틱사가 아파치 루씬을 기반으로 개발/공급하는 검색엔진 솔루션입니다.검색이 빠른 이유는 RDB보다 index를 화려하게 사용하기 때문인데요...

ETC/Elasticsearch 2024.10.13

[Docker] 인터넷 없이 도커 설치하기

회사를 다니다 보면 간혹 인터넷이 안되는 상황이 있을 수 있는데요. 특히 금융권이 내부망은 인터넷을 막아놓기도 합니다. 인터넷이 막혀있으면, 도커를 설치하고 도커 이미지를 집어 넣으면 편하게 개발 환경을 설정할 수 있어서 저는 인터넷이 막혀있을 때는 도커를 설치해서 보통 환경을 세팅합니다. 인터넷 없이 도커를 설치할 땐 그래도 파일은 옮길 수 있는 환경이여야 설치를 할 수 있습니다. 가이드는 아래에 binary로 도커를 설치하는 공식 문서를 참조하시면 됩니다. https://docs.docker.com/engine/install/binaries/

ETC/Docker 2024.02.04

[mysql] docker로 mysql 실행하기

요즘엔 docker가 참 개발을 편하게 해주는 것 같습니다. 오늘은 mysql을 docker로 실행해보도록 하겠습니다. 먼저 이미지를 받아줘야 합니다. 아래 명령어를 활용하여 5.7 버전의 mysql을 받아주겠습니다. docker pull mysql:5.7 이제는 container 실행 명령어를 통해 실행만 하면 됩니다. docker run --name mysql -e MYSQL_ROOT_PASSWORD=1234 -e TZ=Asia/Seoul -d -p 3306:3306 mysql:5.7 옵션이 좀 많다보니, 옵션을 하나씩 훑어 보겠습니다. 먼저 --name 옵션은 컨테이너의 이름을 지정하는 옵션으로 mysql로 컨테이너 이름을 정해주었습니다. -e 는 환경변수를 집어넣는 옵션인데, root passwo..

ETC/MySQL 2024.01.31

모노 레포(Monolithic Repository)

오늘은 모노 레포 구조에 대하여 소개해보려고 합니다. 회사에서 업무를 하다보면, 프로젝트 별로 레포를 구분하기도 하는데 프로젝트가 점점 많아지면서 레포지토리 갯수가 그만큼 많아지게 되면, 유지보수 측면에서는 점점 복잡하게 됩니다. 프로젝트가 나뉘어져서 레포지토리가 나뉘더라도, 사용하는 라이브러리나 코드는 비슷하다보니 모노 레포를 적용하면 훨씬 관리가 용이해지는 효과를 볼 수 있습니다. 아래의 링크는 'Why Google Stores Billions of Lines of Code in a Single Repository'라는 제목으로 구글에서는 왜 하나의 레포로 관리하고 있는지 설명하는 글입니다. https://dl.acm.org/doi/pdf/10.1145/2854146 위의 글에서 설명하는 모노 레포의..

ETC/Git 2024.01.21

[mysql] fulltext index ngram parser

개요 fulltext index에 대해서 정리를 한 번 했었는데(https://seokhyun2.tistory.com/92), fulltext index에서 토큰을 나누는 기본 방식은 띄어쓰기를 기준으로 분리를 합니다. 띄어쓰기를 기준으로만 분리를 하게 되면, 한국어에서는 조사가 다 붙어있어서 검색이 어렵습니다. 예를 들면 '한국'이란 명사에 대해서 '한국은', '한국에서', '한국의' 와 같이 조사가 붙어서 띄어쓰기로만 토큰을 나누게 되면 다 별도의 토큰으로 인식이 되어, '한국'이라는 명사가 있는 문장만 찾고 싶은데 찾을 수 없게 됩니다. 그래서 추가적으로 제공되는 기능이 바로 ngram parser입니다. 원리 ngram parser가 무엇인지, 원리를 알아볼텐데요. ngram에서 n은 숫자이고, ..

ETC/MySQL 2023.04.23

[mysql] fulltext index

개요 mysql 데이터베이스를 사용하다보면, 조회 속도 개선을 위한 작업을 많이 하게 됩니다. 그래서 index를 많이 사용하게 되는데, 기본적인 index는 column값이 정확하게 일치하는 기준으로 사용할 수 있습니다. column값이 텍스트를 활용하고, 값이 일부만 일치하는 경우 조회를 하기 위해서는 like 쿼리를 사용하는데, 그 속도가 매우 느립니다. 완전 동일한 조회가 아니라서 기본적인 index를 사용할 수도 없구요. 이럴 때, fulltext를 사용하면 조회 속도를 개선할 수 있습니다. 원리 fulltext index를 사용하는 방법을 알아보기 전에, 원리를 우선 간단하게 알아보겠습니다. column의 값이 영어 이름이라고 가정하고, '마이클 잭슨'과 '마이클 조던' 이라는 2개의 값이 존..

ETC/MySQL 2023.04.09

svelte 설치 및 세팅

프론트엔드 개발자는 아니지만, 프로토타이핑을 할 일이 있어서 몇가지 프레임워크를 보다가 svelte(스벨트)를 접하게 되어서 사용하다보니 편의성에 매료되었습니다. svelte의 특징은 다른 글에서 정리해보도록 하고, 오늘은 svelte를 세팅하는 글을 작성해보겠습니다. 먼저 svelte도 react나 vue처럼 node를 기반으로 하고 있습니다. node를 기반으로 하고 있으므로 node가 설치되어 있어야 합니다. 참고로 mac os에서 brew install node 명령어로 brew를 활용해서 간단하게 node를 설치할 수 있습니다. 공식 홈페이지에서는 svelte를 설치하는 2가지 방법을 알려주고 있습니다. (https://svelte.dev/blog/the-easiest-way-to-get-sta..

ETC/Svelte 2022.02.04