일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- auto configure
- JVM
- K6
- MongoDB
- 초대장
- SQL
- smart cast
- 리눅스
- c#
- 운영체제
- jsp
- 문법 정리
- spring
- 학점
- 파이썬 소스
- 자바
- 알고리즘
- 오라클 디비
- 백준 알고리즘
- 프로젝트
- 파이썬
- 자바 프로젝트
- gradle
- oracle
- hyperledger
- dynamic query
- 유사코드
- resilience4j
- 티스토리
- 오라클
- Today
- Total
목록전체 글 (231)
모종닷컴

고가용성 (High Availability) 가용성이란 시스템이 정상적으로 사용 가능한 정도를 말합니다. 그렇다면 고가용성이란 시스템이 지속적으로 정상 운영이 가능한 성질을 말합니다. "가용성이 높다"는 뜻으로서 "정상적으로 사용 가능한 시간이 높다" -> "정상적으로 사용 가능한 시간을 늘린다"이라고 이해하면 될 것 같습니다. 이중화 or 다중화 시스템의 일부에 어떠한 장애가 발생했을 경우에 대비하여, 장애 발생시 시스템 전체의 기능을 정상적으로 계속 유지하기 위해 서버를 여러 개 두는 것입니다. 즉 고가용성을 위한 솔루션 중 하나입니다. 시스템이 이중화 혹은 다중화되기 위해서는 클라이언트와 서버 사이에 로드 밸런싱이 필요합니다. 로드밸런서가 여러 대의 서버를 보고있고, 트래픽을 적절하게 분산시킵니다...

멀티 모듈 프로젝트를 사용하다 보면 하위 모듈의 프로퍼티 파일이 필요한 경우가 생깁니다. 예시를 들어보겠습니다. module-a와 module-b가 존재합니다. module-b에는 암호화 관련 서비스가 존재하고 module-a에서는 이 암호화 서비스가 필요하여 module-b를 사용하려고 합니다. 프로젝트의 구조를 보면 아래와 같습니다. module-a의 프로퍼티 파일(/src/main/resources/application.yml)이 존재하고, module-b의 프로퍼티 파일이 존재합니다. Module B @Service class CipherService( @Value("\${encrypt.secretkey}") SECRET_KEY: String ) { private val keySpec = Secr..

atomic counter는 원자성 카운터입니다. 좀 더 쉽게 풀어 설명하자면 동기화된 카운터라고 이해할 수 있을 것 같아요. 카운터는 숫자를 1, 2, 3.. 이런 식으로 숫자를 세는 프로그램입니다. 애플리케이션 내에서는 이 카운터를 다양한 방법으로 동기화시켜 만들 수 있지만 전체 시스템이라면 얘기가 달라집니다. 시스템에서 카운터를 만드는 방법은 여러 가지 있지만 저는 이걸 데이터베이스를 사용하여 구현하고자 합니다. MySQL의 auto-increment를 이용한 카운터를 하는 방법과 mongodb의 findAndModify를 사용해서 구현하였고 이를 비교해보았습니다. 코드도 붙여넣을 예정인데 구현은 Spring+Kotlin으로 하였고 추가적으로 spring-boot-data-jpa, spring-..

Gradle은 사용자 홈 티렉토리와 프로젝트 루트 디렉토리 두 가지 디렉토리를 사용하여 작업을 수행하고 관리합니다. 사용자 홈 디렉토리 Gradle 사용자 홈 디렉토리는 글로벌 속성 구성과 초기화 스크립트, 캐시 및 로그 파일을 저장하는 데 사용됩니다. 디폴트 경로는 $USER_HOME/.gradle 입니다. 문서에서 설명하는 대략적인 구조는 아래 사진과 같다고 합니다. 각각 디렉토리에 대한 설명을 보도록 하겠습니다. 모든 프로젝트가 사용하는 글로벌 캐시 디렉토리입니다. 버전별 캐시입니다. (예: 증분 빌드 지원) 공유 캐시 (예 : 디펜던시의 아티팩트) Gradle 데몬의 레지스트리 및 로그 디렉토리입니다. 글로벌 초기화 스크립트 toolchain support에서 다운로드한 JDK Gradle Wra..

매번 느끼는 것이지만 작업을 하다 보면 몰랐던 것들이 너무 많습니다. 대학교 때 소켓 프로그래밍을 해봤지만 지금 다시 소켓 프로그래밍을 하려니 궁금한 것도 많고 그러네요. 오늘은 TCP handshake에 대해 알아보려고 합니다. 연결을 할 때 3 way handshake , 종료할 때는 4 way handshake로 하고 있습니다. TCP 연결 과정 - 3 way handshake TCP 종료 과정- 4 way handshake 툴 준비 실제로 어플리케이션을 만들고 패킷을 분석해서 실제로도 위와 같은 동작을 하는지 보려고 합니다. 패킷을 탈취하고 분석하기 위해서는 몇 가지 툴이 필요합니다. 저는 가장 흔하게 사용되고 있는 tcpdump와 wireshark를 사용하려고 합니다. 설치는 어렵지 않습니다. ..