본문 바로가기
728x90

츄Log100

토스 카프카 IDC 이중화 솔루션을 보고 토스에서 발표한 카프카 IDC 이중화 전략 발표영상을 보았습니다. 토스증권은 각종 주식데이터, 사용자데이터, 로그 등등 대부분의 곳에 카프카를 쓴다고 합니다.그러므로 카프카의 가용성과 내고장성이 매우 중요한 상태고단순한 브로커 이중화뿐만 아니라DR의 일환으로, IDC 단위로 장애가 났을 때를 대비하여 IDC또한 이중화를 한다고 합니다. 다만 보통 IDC단위의 이중화를 할 때는 active-standby 모드로 구성합니다.active를 사용하고 있다가 active에서 문제가 발생하면 standby가 active를 해주는 것이죠.  하지만 active-standby 모델은 유지보수 관점에서 운영에 이슈가 있다고 합니다.standby로 유지되던 것이 실제 장애가 발생하여 active역할을 수행하려고 할 때 여.. 2024. 6. 16.
컨슈머 주도 계약, Spring Cloud Contract https://spring.io/projects/spring-cloud-contract  아키텍쳐 책을 보다가 컨슈머 주도 계약이라는 개념을 보았습니다.일반적으로 하나의 프로바이더와 여러 컨슈머가 있을 때, 프로바이더가 업스트림이 되어 계약을 주도하고 컨슈머는 순응하게 됩니다.하지만 이 개념은, 컨슈머가 직접 프로바이더와 컨슈머간의 계약을 정의하고 시스템적으로 계약을 강제하기까지 하는 것입니다. 먼저1. 컨슈머가 계약을 정의합니다.2. 프로바이더와 컨슈머는 이 계약을 강제합니다 (ex. 테스트코드, 피트니스함수) 저는 처음에 1번의 과정이 단순히 프로바이더-컨슈머간 구두로 얘기 정도밖에 생각나지 않았습니다.이게 시스템적으로 가능할까? 싶었는데, 함께 스터디하는 고-수 개발자님께서, Spring Clou.. 2024. 6. 16.
뇌가 뜨거워지는 멀티스레드 프로그램에서 좀비스레드 동시성 프로그래밍을 연습중입니다. 좀비스레드는,앱 실행이 끝난 뒤에도 계속 실행 상태로 남아 앱의 리소스를 차지하는 스레드입니다. 좀비스레드는 다양한 상황에서 발생할 수 있습니다.예외처리 미흡, 스레드 자원정리 미흡, 스레드풀 사용시 등등,, 저는 동시성 프로그래밍을 연습하면서 좀비스레드를 만들어보았습니다. 동시성 처리가 되어있지 않은 ArrayList에 데이터를 발행/소비하는 Producer와 Consumer를 만들고 이를 여러 스레드로 수행했습니다.일부 예외가 발생한 스레드는 상위로 전파되어 Runnable이 종료되어 스레드 정리가 되었으나,일부 스레드는 계속 해당 로직에서 busy waiting 상태로 머물러있었습니다. Producer 하나와 Consumer 3개를 만들었는데, Producer1,.. 2024. 6. 15.
1일 1알고리즘 https://leetcode.com/problems/sum-of-digits-in-base-k/https://leetcode.com/problems/minimum-operations-to-collect-elements/description/https://leetcode.com/problems/longest-palindrome/토요일, 금요일 2024. 6. 15.
[알고리즘 뽀개기] Arrays101 #1 https://leetcode.com/problems/find-numbers-with-even-number-of-digits/description/https://leetcode.com/problems/duplicate-zeros/description/https://leetcode.com/problems/move-zeroeshttps://leetcode.com/problems/height-checker/description/https://leetcode.com/problems/third-maximum-number/description/https://leetcode.com/problems/third-maximum-number/solutions/1076170/java-100-faster-and-simple/ .. 2024. 6. 12.
[알고리즘 뽀개기] the-leetcode-beginners-guide #2 1. middle-of-the-linked-list https://leetcode.com/problems/middle-of-the-linked-list2. ransom-note https://leetcode.com/problems/ransom-note/description/ 되게 좋은 글!https://leetcode.com/explore/learn/card/the-leetcode-beginners-guide/679/sql-syntax/4361/ Stay Motivated!!!! 2024. 6. 11.
Hadoop 에코시스템 먹방 -4. Spark & Yarn Spark> 데이터 병렬 처리를 위한 인메모리 분산 컴퓨팅 프레임워크임> 다양한 스파크 라이브러리가 지원되며 데이터 분석, 그래프처리, 기계학습 등에 다양하게 사용됨ex) Spark Streaming : 스트리밍 데이터 처리 라이브러리, Spark SQL : sql 처리 라이브러리, ...Spark 구조스파크는 Cluster Manager + Driver + Executor로 구성됨 Cluster Manager> 클러스터의 리소스를 관리하는 역할> Hadoop YARN, 쿠버네티스, 스탠드얼론 등이 가능함Driver> 스파크 작업의 정보를 유지하고 관리하는 중심적 역할> 클러스터 매니저로부터 리소스를 할당받아서 Executor를 실행시키고 작업을 스케줄링함> 사용자의 코드를 DAG으로 변환하고 여러 ta.. 2024. 6. 11.
Hadoop 에코시스템 먹방 -3. MapReduce MapReduce?> 하둡에서 사용되는 분산 컴퓨팅 프레임워크> 입력 데이터를 정해진 크기로 나누어 여러 개의 작업을 생성하고 병렬로 수행함> 일부 작업이 실패하더라도 자동으로 다시 수행함> 그러므로 입력 데이터의 크기와 상관 없이 동일한 코드로 작업 가능함 MapReduce 작업 구조Map> 입력을 정해진 크기로 나눈 후 사용자가 정의한 함수를 실행함> 입력 데이터를 정렬하거나 분류함> key-value 형태의 데이터가 생성됨> Map 작업의 결과물은 작업이 수행된 장비의 로컬 디스크에 저장됨Reduce> Map의 결과를 최종적으로 병합하여, 사용자가 정의한 함수를 실행시킴> 결과를 로컬이 아닌 분산디비인 HDFS에 저장함Shuffle & Sort> Map작업의 결과를 Reduce작업으로 넘겨주기 전에.. 2024. 6. 11.
Hadoop 에코시스템 먹방 -2. HDFS HDFS> 하둡 클러스터의 데이터 저장소 역할을 하는 분산 파일 시스템임> 일반적인 상용 하드웨어로 클러스터 구성이 가능하며 대용량 파일을 다룰 수 있도록 설계됨> 내결함성과 확장성이 뛰어남HDFS 전제와 목표Hardware Failure> 상용 하드웨어를 사용할 수 있도록 설계됨사용 하드웨어는 쉽게 고장날 수 있기에 HDFS는 서버 장애가 발생하더라도 작업에 영향이 가지 않도록 데이터를 복제하여 저장하고빠르게 장애를 탐지하여 복구하는 것을 목표로함Large Data Sets> 파일을 블록 단위로 저장하여 단일 디스크의 크기보다 큰 파일을 저장할 수 있음Simple Coherency Model> 쓰기 연산보다 읽기 연산이 많다는 것을 전제로 함> HDFS에 저장된 것은 수정이 불가하여 데이터 일관성 문제.. 2024. 6. 11.
Hadoop 에코시스템 먹방 -1. Hadoop 개요 데이터에 대해 아무것도 모르는데 데이터 분석 요청 업무가 들어왔습니다. 주변에 자문을 구하더라도 개요에 대해서는 알아야 하므로 Hadoop 에코시스템에 대해 알아보았습니다. 시작~ Hadoop 등장배경> 데이터 급증 & 큰 데이터를 효과적으로 병렬처리하는 구조를 가진 프레임워크가 필요했음특징> 각 데이터에 대해 복제본을 생성한 후 안전하게 보관함 => HDFS> 큰 데이터를 나눠서 작업한 후 그 결과물을 합쳐줌 => MapReduce> 클러스터가 scalable해서 컴퓨터를 추가하거나 제거하여 자원을 유연하게 조절할 수 있음HDFS (Hadoop Distributed File System)> 하둡 클러스터에서 사용되는 저장소> 여러 서비스들이 이 저장소를 통해 파일을 공유할 수 있음> 일부 서버가 문제가.. 2024. 6. 11.
[알고리즘 뽀개기] the-leetcode-beginners-guide #1 비기너 가이드 #1 running-sum-of-1d-arrayhttp://leetcode.com/problems/running-sum-of-1d-array 시간복잡도는 O(n)이고, 공간복잡도를 O(n) 혹은 O(1)로 할 수 있다.class Solution { public int[] runningSum(int[] nums) { /** // 1. runningSum 배열을 만들고, 누적값을 위한 변수 하나를 선언한다. int[] runningSums = new int[nums.length]; int sum = 0; // 2. nums를 하나씩 순회하며 // 3. 누적값+i를 더하여 runningSum에 넣는다. f.. 2024. 6. 10.
리트코드 비기너's 가이드부터 시작 https://leetcode.com/explore/learn/card/the-leetcode-beginners-guide/  알고리즘 이쉑... 뽀갠다.. 뽀개고 당당하게 이직한다 2024. 6. 10.
728x90