본문 바로가기

전체 글29

[React/TS] MUI DataGrid로 수정 가능한 테이블 만들기 안녕하세요. 황진성입니다. 이번 글에서는 React.js와 TypeScript를 활용해서 수정 가능한 테이블을 만들어보려 합니다. 구글의 Material UI Design을 구현한 라이브러리인 MUI를 활용해 볼 예정이며, MUI의 DataGrid 컴포넌트로 테이블을 생성할 수 있습니다. 이번에 다룰 내용이 간단하지만 블로깅 하는 이유는 공식 문서에 제가 원하는 방식이 설명되어 있지 않아서 많이 애먹었기 때문입니다... MUI DataGrid를 사용하시는 분들 중 저와 비슷한 기능을 만드시는 분들은 시간 낭비를 하시지 않았으면 좋겠습니다. 목표 React 프로젝트 생성부터 DataGrid로 테이블을 생성하고 변경된 값으로 상태를 변경하는 것까지 해보겠습니다. 프로젝트 생성 스크립트 $ npx create.. 2023. 11. 17.
[ELK] 엘라스틱서치 샤딩, 이 정도는 알고 사용하자 안녕하세요. 황진성입니다. 오늘은 Elasticsearch에서 데이터를 나눠 저장하는 단위. 샤드에 대해 알아보고 샤딩을 제대로 사용하기 위해 알고 있으면 좋은 내용들에 대해 알아보겠습니다. 이 글을 이해하기 위해서는 엘라스틱서치 노드, 특히 데이터 노드가 무엇인지 알고 있는 것이 좋습니다. [ELK] 엘라스틱서치 클러스터를 구성하는 다양한 노드에 대해 알아보자 [ELK] 엘라스틱서치 데이터 노드를 효율적으로 관리하는 방법 이 글의 내용은 작성일 기준 최신 버전인 Elasticsearch 8.10 문서를 따라 작성됐습니다. 샤드란? Elasticsearch는 여러 대의 노드를 효율적으로 활용해서 분산 처리를 하기 위해 데이터를 샤드(Shard)라는 단위로 나눠서 분산 저장합니다. 데이터를 분산 저장하면 .. 2023. 11. 3.
[ELK] Nori(노리) Tokenizer로 형태소 분석하기 /w Docker 안녕하세요. 황진성입니다. 오늘은 한글 형태소 분석기를 사용해서 주어진 텍스트에서 필요한 단어만 뽑아내는 방법에 대해 알아보겠습니다. 또한 나만의 사전을 만들어서 커스텀 분석기를 만드는 것까지 실습해 보겠습니다. 아래에서 진행한 모든 내용은 작성일 기준 Elasticsearch 8.10에서 정상적으로 동작합니다. 노리 형태소 분석기란? 한국어 형태소 분석기 중 많이 사용되는 형태소 분석기인 노리(Nori) 입니다. 노리는 Elasticsearch 엔진과 함께 구동하는 것이 일반적입니다. Lucene 분석 모듈을 사용하기 때문입니다. 노리는 mecab-ko-dic 사전을 통해 한국어 분석을 수행합니다. (제가 ES와 분리된 형태로 사용하는 방법을 찾아봤는데 못 찾았습니다.. 아시는 분은 제보 부탁드립니다... 2023. 10. 30.
[ELK] 엘라스틱서치 데이터 노드를 효율적으로 관리하는 방법 안녕하세요. 황진성입니다. 지난 글에 이어서 데이터 노드를 효율적으로 관리/활용하는 방법에 대해 알아보겠습니다. 연산이 많고 접근이 잦은 데이터와 거의 접근되지 않는 데이터를 분리하면 비용, 공간 측면에서 크게 절약할 수 있습니다. 주로 대용량 데이터를 다루는 상황이라면 차이가 극명하게 날텐데, Elasticsearch에서는 어떻게 이 문제를 해결하는지 알아봅시다. 혹시 독자님도 JVM based 언어를 많이 사용하시는지 ~? 저는 이번 글을 쓰면서 JVM GC 힙 영역의 Survivor1 + Survivor2 + Eden + Old 구조가 떠올랐습니다. 접근 확률에 따라 점점 밀어넣는 방식인데, 그림을 대충 보시고 아래 글을 읽으면 이해가 조금 더 빠를 것 같습니다 😁 이 글의 내용은 작성일 기준 최신.. 2023. 10. 24.
[ELK] 엘라스틱서치 클러스터를 구성하는 다양한 노드에 대해 알아보자 안녕하세요. 황진성입니다. 오늘은 Elasticsearch에서 클러스터를 구성하는 다양한 종류의 노드를 알아보고, 특히 마스터 노드가 선출되는 과정과 주의해야 할 점에 대해서도 알아보겠습니다. 이 글의 내용은 작성일 기준 최신 버전인 Elasticsearch 8.10 문서를 따라 작성됐습니다. 클러스터 구성에 앞서, 클러스터를 구성해야 하는 이유 일반적으로 클러스터는 여러 대의 컴퓨터를 병렬로 연결해서 마치 하나의 시스템인 것처럼 구성하는 것을 의미합니다. 클러스터를 구성하면 시스템 장애를 대비한 고가용성(High availability)을 높이는 동시에 시스템 성능도 높일 수 있습니다. Elasticsearch는 클러스터 구성에 필요한 여러 기능을 제공하고 있으며, 분산 처리를 지원하고 있기 때문에 굉.. 2023. 10. 17.
[일기] 첫 한강 러닝 다녀왔습니다 안녕하세요. 황진성입니다. 오늘은 처음으로 한강에 러닝 하러 다녀왔습니다. 처음 서울에 왔을 때부터 한강에 대한 로망이 조금 있었는데, 날씨 좋은 날 달려보고 싶다는 생각이 있었습니다. 하지만 마음먹은걸 행동으로 옮기는 데 까지 꽤 오랜 시간이 걸린 것 같습니다. 오늘 러닝을 진행했던 코스입니다. 동작역 2번출구에서 출발해서, 잠수교와 동작대교를 거쳐 한 바퀴 도는 코스였습니다. 제 폰으로 측정하기로 5.2km 정도가 나왔습니다. 생각보다 날씨가 쌀쌀해서 반팔티 반바지 입고 나왔다가, 긴팔티로 바꿔 입고 나왔습니다. 처서가 지난지 한 달이 넘었다는 것이 체감 되었습니다. 찬 기운에 공기는 한없이 무거웠지만, 한강으로 가는 발걸음은 가벼웠습니다. 잠수교 앞에서 예쁜 조명과 함께 물을 뿌려주는 모습. 예뻤습.. 2023. 10. 3.
[독후감] 출근했더니 스크럼 마스터가 된 건에 관하여 : 리뷰 안녕하세요. 황진성입니다. 애자일 조직에서 일하기 위해서 애자일에 대한 이해가 어느 정도 필요하다는 생각이 들었습니다. 그리고 회사에서도 애자일 조직의 운영을 위해 비용 투자를 하고 있는데, 뭐가 좋은 거고 어떻게 하는 거고 내 행동을 어떻게 바꿔야 하는지 알고 싶어서 책 한 권을 읽어봤습니다. 책 제목은 "출근했더니 스크럼 마스터가 된 건에 관하여" 입니다. https://product.kyobobook.co.kr/detail/S000200083569 출근했더니 스크럼 마스터가 된 건에 관하여 | 니시무라 나오토 - 교보문고 출근했더니 스크럼 마스터가 된 건에 관하여 | product.kyobobook.co.kr 각 섹션은 상황별로 구성되어 있고, 섹션별로 전달하고자 하는 바를 요약 및 해석해 봤습니다.. 2023. 9. 27.
[Infra] UUID vs Snowflake ID : 분산 시스템에서 유일한 ID를 만들어보자 안녕하세요. 황진성입니다. 오늘은 분산 시스템에서 유일한 ID를 만드는 방법에 대해 알아보겠습니다. 다양한 방법이 있지만, Twitter(X)에서 만든 Snowflake 방식과 UUID 방식을 주로 비교해 보겠습니다. 그리고 ID 생성기를 직접 Kotlin으로 구현하고, Spring Boot, JPA와 통합해서 간단한 블로그 애플리케이션을 만들어보겠습니다. 개요 개발을 하다 보면 유일한 ID를 만들어서 데이터를 관리해야 할 일이 생기기 마련입니다. 대표적으로 관계형 데이터베이스의 테이블 내 레코드 별로 고유 식별자를 가지는 경우가 있습니다. PK로써 테이블 내 고유함을 결정하는 지표가 되며, 인덱스 생성 시에도 활용합니다. 하지만 데이터와 트래픽이 많아진다면 ID 부여 방식에 대해 한 번쯤 고민해봐야 합.. 2023. 9. 10.
[회고] 일 잘하는 신입 개발자가 되고 싶었어요 (ft. 장애 부검) 안녕하세요. 황진성입니다. 최근에 회사에서 기능 하나를 개발하게 되었는데, 그 이야기를 해볼까 합니다. 개요 약 한 달 전, 유저 유입과 인터렉션을 늘리기 위해 특정 조건을 만족하는 유저에게 푸시 알림을 보내주는 기능을 개발하게 됐습니다. 결론적으로 기능 배포 2일 차인데, 관련 지표에서 평균 이상으로 좋은 성과를 보여주고 있습니다. 😮‍💨 지금은 정상적으로 동작하지만, 여기까지 수많은 핫픽스 배포가 있었습니다. 여러 핫픽스는 코드 리뷰와 배포 승인을 해주는 백엔드 셀에게 피로감을, 제 때 정상적으로 동작하길 기대했던 PO에게 불안감을 줬습니다. 최근에는 잠도 거의 못 잘 만큼, 기능을 개발하는 과정에서 많은 고민과 걱정거리가 있었습니다. 이 기회에 이번 일을 확실히 짚고 넘어가서, 더 성장한 내가 되기.. 2023. 8. 24.
[ELK] 초심자를 위한 Elasticsearch, Logstash, Kibana를 Docker로 실행하기 안녕하세요. 황진성입니다. 지난 글에서 ELK Stack에 대한 간단한 설명과 설치/실행하는 방법에 대해 전해드렸는데, 이번글에서는 도커 컨테이너를 활용해서 ELK를 실행하는 방법을 전해드리려 합니다. 아래 프로젝트를 활용합니다. https://github.com/deviantony/docker-elk GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose. The Elastic stack (ELK) powered by Docker and Compose. - GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compos.. 2023. 8. 20.