일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 운영체제
- Spring
- 컴퓨터구조
- JPA
- MySQL
- 디자인 패턴
- 파이썬
- 자바
- MSA
- c언어
- mongoDB
- Proxy
- IT
- C
- 자료구조
- react
- Java
- Algorithm
- 알고리즘
- Data Structure
- Heap
- design pattern
- spring webflux
- Kafka
- JavaScript
- redis
- 네트워크
- Galera Cluster
- 백준
- OS
- Today
- Total
목록분류 전체보기 (214)
시냅스
Spring WebFlux 의 작동방식을 이해하기 위해 단계별로 진행하는 포스팅입니다. 이 글에서는 Reactive Streams 에 대해 설명합니다. Reactive Programming 리액티브 프로그래밍은 빠른 반응을 하고자 하는 시스템입니다. 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화하고 이런 빠른 응답을 바탕으로 유지보수와 확장이 용이한 시스템을 구축하고자 합니다. 리액티브 선언문에 따르면, 리액티브 프로그래밍은 아래 4가지를 만족해야 합니다. 응답성 : 시스템이 가능한한 즉각적으로 응답 탄력성 : 시스템이 장애에 직면하더라도 응답성을 유지하는 것 유연성 : 시스템의 작업량이 변화하더라도 응답성을 유지하는 것 메세지 구동 : 비동기 메세지 전달에 의존하여 구성요소 간 느슨한 ..
이 글에서는 Cent OS 를 기준으로 Redis 설치부터 Redis Cluster 구성까지 살펴봅니다. 실제로 운영하며 겪었던 TroubleShooting 및 중요사항에 대해 설명합니다. Redis 설치 공식 release 링크 위 링크를 통해 원하는 버전의 redis 를 download 받습니다. wget http://download.redis.io/releases/redis-{version}.tar.gz 다운로드 받은 tar 를 해제한 후 해당 폴더 내부에서 make 를 실행합니다. 이때 필요한 package 는 make, pkg-config, gcc 입니다. 우선 같은 폴더의 deps 로 들어간 뒤 make hdr_histogram hiredis jemalloc linenoise lua 를 실행하..
이 글에서는 Cent OS 를 기준으로 MariaDB 설치부터 Galera Cluster 구성까지 살펴봅니다. 실제로 운영하며 겪었던 TroubleShooting 및 중요사항에 대해 설명합니다. MariaDB 설치 /etc/yum.repos.d/MariaDB.repo 를 등록합니다. MariaDB 공식 repo 링크 위 링크에서 현재 환경에 맞는 OS, MariaDB Version 을 선택합니다. yum install MariaDB 명령어로 MariaDB 를 설치합니다. mariadb --version 명령어로 설치를 확인합니다. systemctl start mariadb 로 실행 후 mysql -uroot -p 로 접속합니다. 이 때 root 는 아직 password 가 설정되지 않은 상태이므로 pas..
이 글에서는 MySQL 의 Galera cluster 의 상태 전송에 대한 이해와 그 방법에 대해서 알아봅니다. https://liltdevs.tistory.com/201 GTID 와 Galera Cluster GTID 글로벌 트랜잭션 식별자, Global Transaction ID 는 서버에서 커밋된 각 트랜잭션에 대한 식별을 가능하게 합니다. 서버 내에서만 유일한 것이 아니라 모든 복제 서버에서도 식별을 가능하게 합니 liltdevs.tistory.com Galera Cluster 는 Multi Master 의 운영을 쉽게 도와주는 도구입니다. 각각의 노드에서 Read-Write 가 가능하고, 논리적인 동기 방식을 지원하므로 선형성을 갖출 수 있습니다. 다만 운영하며 상태 이전에 대한 이해는 필요할 ..
정보 관리를 위해 Java/Spring 환경에서의 시스템 변수, 환경변수의 활용에 대한 글을 작성했습니다. Vault 와 같은 툴을 사용할 수도 있지만 그 전에 application level 에서의 이해를 돕기 위해 글을 작성하였습니다. 시스템 중요 정보를 외부에서 할당할 때 정보은닉을 지키며 할당한 데이터를 사용하는 방법에 대해 알아봅니다. 아래에서는 OS 환경 변수, 시스템 변수, 나아가 application.yml 이 어떤 순서로 할당되는지에 대해 알아봅니다. System.getenv JVM 이 실행되는 운영체제의 환경변수를 가져옵니다. 대개 apllication 을 실행하는 OS 의 환경변수 이거나 build time 에 shell / Docker / k8s 등에서 설정하기도 합니다. OS 전..
이 글에서는 Spring 6, Spring boot 3++ 를 사용하면서 spring batch 5 로 업그레이드 할 때 migration 을 위한 내용을 요약합니다. 주로 사용 방법에 대해서만 상술하니 자세한 내용은 아래의 공식문서를 참고하시기 바랍니다. Job, Step v4 // Sample with v4 @Configuration @EnableBatchProcessing public class MyStepConfig { @Autowired private StepBuilderFactory stepBuilderFactory; @Autowired private JobBuilderFactory jobBuilderFactory; @Bean public Job myJob(Step step) { return ..
Galera Cluster https://liltdevs.tistory.com/201 GTID 와 Galera Cluster GTID 글로벌 트랜잭션 식별자, Global Transaction ID 는 서버에서 커밋된 각 트랜잭션에 대한 식별을 가능하게 합니다. 서버 내에서만 유일한 것이 아니라 모든 복제 서버에서도 식별을 가능하게 합니 liltdevs.tistory.com 현재 회사에서는 고가용성을 목적으로 Galera Cluster 를 사용하고 있습니다. Galera Cluster 는 bootstrap(galera_new_cluster 로 실행시킨 node) 이 galera cluster 형성에 중요한 역할을 합니다. 아래에서는 그 설명과 관련 파일에 대해 알아보겠습니다. Boostrap Bootst..
GTID 글로벌 트랜잭션 식별자, Global Transaction ID 는 서버에서 커밋된 각 트랜잭션에 대한 식별을 가능하게 합니다. 서버 내에서만 유일한 것이 아니라 모든 복제 서버에서도 식별을 가능하게 합니다. 따라서, 복제 토폴로지 내에서 모든 트랜잭션을 고유하게 식별할 수 있게 합니다. GTID 를 통해 slave 는 master 에 연결된 후 데이터를 어디에서부터 동기시켜야 하는지 판별하고, MySQL 서버가 죽었다가 다시 올라와 데이터가 중단된 시점을 판단하여 데이터 불일치를 해결할 때에도 사용됩니다. Galera Cluter Galera Cluster 는 Sync / Multi Master 를 지원합니다. 단, 실제로는 네트워크 문제(복제 시 네트워크 지연으로 인한 장시간 blocking..
이 글에서는 EC2 스토리지를 증설 시에도 적용이 되지 않는 문제를 살펴봅니다. Linux File System 의 간략한 설명을 함께 합니다. Amazon EBS 볼륨 - Amazon Elastic Compute Cloud 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오. docs.aws.amazon.com Amazon EBS 는 유연한 볼륨의 변경을 가능하게 합니다. 필요에 의해 스토리지 용량을 증가시킬 때에도 간편하게 사용할 수 있습니다. EC2 에서는 EBS를 기본 Secondary Storage 로 채택하고 있습니다. 이런 변경에 있어 EC2 인스턴스의 EBS 볼륨 크기를 증가시켰음에..
이 글에서는 Full-Text Index + Search 에 대한 설명과 프로젝트에서 사용하게된 이유, Full-Text Search 를 JPA 에서 사용하는 방법을 설명합니다. 현재 진행하고 있는 프로젝트는 공연에 대한 예매시스템을 구축하고 있습니다. 사용자들은 공연에 대한 정보를 확인하거나 예매할 때 검색을 사용하기에 기능을 구현할 필요가 있었습니다. 여기에 고민한 것은 Elasticsearch 와 MySQL 의 Full-Text Search 였습니다. Elasticsearch 는 검색에 대한 분명한 장점이 있습니다. 자체적으로 분산 아키텍처를 구축하고 데이터를 샤딩하여 저장하고 역 인덱스를 통한 빠른 데이터 참조를 가능하게 합니다. 다만 구축하려는 검색기능은 높은 가용성이나 정확성을 요구하지 않고 ..