꽥블로그
최신 글
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 4장
가상 면접 사례로 배우는 대규모 시스템 설계 기초 4장
2024.10.06처리율 제한 장치특정 시간 동안 네트워크를 통해 전송되는 데이터의 양이나 서비스에 대한 요청 수를 제한하는 장치나 소프트웨어를 의미한다.API 처리 장치의 장점Denial of Service 공격 방지DOS 라고 하며 인터넷이나 네트워크에 연결된 서비스나 서버를 대상으로 공격자가 정상적인 사용자나 시스템이 서비스를 이용하지 못하도록 의도적으로 과부하를 일으키는 사이버 공격을 방지한다. 서비스에 대한 요청 수를 제한하기 때문에 비용이 절감될 수 있다.서버 과부하를 막는 목적도 있다.시스템 설계 4단계 접근법을 적용1단계 문제 이해 및 설계 범위 확정 요구사항 설정되어 있는 처리율을 초과하는 요청은 제한한다. HTTP 응답시간에 나쁜 영향을 주면 안되니 낮은 응답시간을 전제로 한다.적은 메모리하나의 처리율 .. -
[VMware Tanzu] Spring Boot 밋업 with Josh Long
[VMware Tanzu] Spring Boot 밋업 with Josh Long
2024.09.29인프런에 퇴근길 밋업으로 영상 제공되는게 있어서 들어보았다. 처음에는 개 입양서비스를 만드는 부분에 대해서 실시간 라이브 코딩을 진행했다. 스피커 Josh Long 분께서 말을 너무 잘하셔서 놀랐다.Spring Project를 바로 만드셨고 아래 Dependencies 를 하나씩 추가하셨다. 로컬호스트에서 프로젝트를 실행하고 데이터베이스까지 연결 확인해보려고 했는데 우선은 데이터가 없어서 스킵했다! 코드에서 Data Oriented Programming 방식을 지원하는데 Java 버전이 17 이후로 올라가면서 다음 문법들을 지원하게 되었다. sealed typesrecordspattern matching smart switch expressions 이러한 방식을 지원하는건 자바가 대규모 프로그래밍에서 .. -
spring batch partitioning
spring batch partitioning
2024.09.22spring batchmasterstep 이 slavestep 을 실행시키는 구조slavestep은 독립적으로 실행slavestep은 stepExecution 파라미터 환경 구성slavestep은 다음으로 구성(하위)ItemReader - ItemProcessor - ItemWriter - masterstep은 partitionStep 이다.(하위)slavestep은 taskletstep, flowstep 이 올 수 있다. partitioningpartitionStep파티셔닝 기능을 수행하는 Step 구현체PartitionHandlerPartitionStep 에 의해 호출되며 스레드를 생성해서 WorkStep을 병렬로 실행한다.StepExecutionSplitterWorkStep에서 사용할 StepExe.. -
카프카 주요 요소
카프카 주요 요소
2024.09.16kafka와 kafka 아키텍처의 주요 구성 요소Event/Message 전송을 위해 사용된다.장점 : 고가용성, 빠른 처리단점 : 순서보장이 어렵다. 아주 작게 사용이 어렵다.Distributed 나눠서 작업할 수 있다. Pub/sub -> 전달하는 쪽은 전달받은 쪽에 관여할 필요가 없다.Product, Consumber 가 존재한다.Server : Broker, Zookeeper는 Broker간의 분산처리 정보가 관리된다.3개 이상의 Broker 로 구성KSQL, Connector, Kstream 등의 추가 모듈KRaft를 통해 zookeeper 제거할 수 있음(Not Stable) RabbitMQErlang 으로 AMQP를 구현한 Message Broker SystemKafkaProducer -> .. -
Spring Batch 멀티 프로세스
Spring Batch 멀티 프로세스
2024.09.09FutureTask FutureTask task = new FutureTask(Callable) - Thread 가 수행하는 Task로서 Callable 을 실행시키고 결과를 Future에 담아 반환 - Runnable 은 스레드를 실행하고 코드를 실행할 수 있는 인터페이스를 제공하며, 반환 값을 가질 수 없다. 반면에 Callable 은레드를 실행하고 코드를 실행하면서 반환 값을 가질 수 있다. 스프링 배치 멀티 스레드 프로세싱Step 안에 ItemProcessor 가 비동기적으로 동작하는 구조AsyncItemProcessor 와 AsyncItemWriter 가 함께 구성이 되어야 함기본 처리 방식은 아래와 같다. JobStepItemReaderAsyncItemProcessor -> Item.. -
Spring Batch 5 migration guide
Spring Batch 5 migration guide
2024.09.01개요Spring Batch 5.0부터 JobBuilderFactory와 같은 일부 팩토리 클래스들이 deprecated 되었고, 대신 직접 빌더를 생성하는 방식으로 변경팩토리 메서드는 보통 매개변수가 숨겨져 있는 경우가 많아 코드의 동작을 이해하는 데에 다소 어려움 해결Spring Batch 5.0 Migration Guidetasklet, chunkTransactionManager 추가PlatformTransactionManager는 Spring이 제공하는 트랜잭션 관리 인터페이스로, 일반적으로 데이터베이스와 관련된 트랜잭션을 관리합니다.JobConfig 또는 BatchConfig에서 주입받는 PlatformTransactionManager는 보통 Spring이 관리하는 DataSourceTransac.. -
몽고디비 모델링, 자주사용하는 연산자 정리
몽고디비 모델링, 자주사용하는 연산자 정리
2024.08.19몽고디비(MongoDB)와 관계형 데이터베이스(RDBMS) 간의 모델링 차이관계형 데이터베이스에서는 보통 데이터를 여러 테이블에 나누어 저장합니다. 예를 들어, "사용자(User)"와 "주문(Order)"이라는 두 개의 테이블이 있다고 가정해보겠습니다.User 테이블 user_id (Primary Key) name email ...Order 테이블 order_id (Primary Key) user_id (Foreign Key referencing User) product_name order_date ... 이러한 구조에서, 특정 사용자의 모든 주문을 조회하려면 두 테이블을 조인(join)해야 합니다. 이는 다음과 같은 SQL 쿼리로 표현될 수 있습니다.SELECT u.name, o.product_name.. -
DAG, 위상정렬(feat. BOJ. 줄세우기)
DAG, 위상정렬(feat. BOJ. 줄세우기)
2024.08.18위상정렬위상정렬(Topological Sorting)은 방향성 비순환 그래프(Directed Acyclic Graph, DAG)의 노드들을 선형으로 정렬하는 알고리즘입니다. 이 정렬은 그래프의 모든 간선이 방향성에 맞도록 순서대로 나열되도록 합니다.DAG = 사이클이 없는 방향 있는 그래프를 의미합니다. 선행그래프 구조를 가지고 있습니다.DAG 에서 할 수 있는 알고리즘은 위상정렬 알고리즘이 활용됩니다. BFS 알고리즘을 응용해서 구현할 수 있습니다.위상정렬에서 주목해서 봐야할 것은 순서와 큐 입니다. 이 상태에서 인디그리가 0인 상태인 얘들을 큐에 넣어줍니다. 큐 : 1,2,3 이 존재하고 (왜냐하면 1,2,3 노드로 들어오는 화살표가 0) 여기서 하나씩 빼면서 BFS 과정을 거쳐주게 됩니다.순서 :.. -
알고리즘 펜윅 트리
알고리즘 펜윅 트리
2024.08.11시작펜윅 트리, 세그먼트 트리에서 변형된 형태입니다. 대표적으로 구간 합 알고리즘을 O(N)보다 빠르게 풀고자 할 때 펜윅 트리를 사용합니다.일반적으로 구간 합을 구할 때 O(N) 정도의 시간이 걸립니다.펜윅 트리(BIT = Binary Indexed Tree) 이용하게 되면 O(logN) 으로 시간 복잡도를 감소 시킬 수 있습니다. 전체 노드의 부분 합 즉, 0~K 합을 구해 두게 되면 원하는 구간 합 S~D를 구하는 것이 가능해 집니다. (Start ~ Destination)O(logN) 의 수행시간 만으로 구간합을 구할 수 있게 됩니다. 구간 합 외에도 같은 원리로 업데이트도 수행할 수 있게 됩니다. 펜윅트리 구조일반적으로 펜윅 트리 구조는 아래와 같이 세그먼트 트리를 응용한 형태로 구조를 정형화.. -
가상 면접 사례로 배우는 대규모 시스템 설계 기초 3장 - 시스템 설계 면접 공략법
가상 면접 사례로 배우는 대규모 시스템 설계 기초 3장 - 시스템 설계 면접 공략법
2024.08.04효과적 면접을 위한 4단계 접근법1단계 - 문제 이해 및 설계 범위 확정시스템 설계 시 질문하여 요구사항과 가정들을 분명히 하자.엔지니어가 가져야 할 가장 중요한 기술 중 하나는 올바른 질문을 하는 것.만약 시스템 설계를 한다면 어떤 질문들을 만들어야 할까?예제뉴스 피드 시스템 설계하라는 요구를 받았다고 한다면 다음 질문을 해볼 수 있을것이다.모바일 앱과 웹 앱 가운데 어느 쪽 지원 -> 둘 다 지원가장 중요한 기능은 무엇인가요?-> post, 친구들과 피드 기능을 볼 수 있어야 한다. 정렬 기준 -> 시간 역순으로 정렬최대 몇명의 사용자 -> 5000명트래픽의 규모는? -> dau 천만명포스트에서 지원하는 파일 양식은 무엇인가요? -> 이미지나 비디오 같은 미디어 파일 포스트2단계 - 개략적인 설계안 ..
모든 글
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 4장
가상 면접 사례로 배우는 대규모 시스템 설계 기초 4장
2024.10.06처리율 제한 장치특정 시간 동안 네트워크를 통해 전송되는 데이터의 양이나 서비스에 대한 요청 수를 제한하는 장치나 소프트웨어를 의미한다.API 처리 장치의 장점Denial of Service 공격 방지DOS 라고 하며 인터넷이나 네트워크에 연결된 서비스나 서버를 대상으로 공격자가 정상적인 사용자나 시스템이 서비스를 이용하지 못하도록 의도적으로 과부하를 일으키는 사이버 공격을 방지한다. 서비스에 대한 요청 수를 제한하기 때문에 비용이 절감될 수 있다.서버 과부하를 막는 목적도 있다.시스템 설계 4단계 접근법을 적용1단계 문제 이해 및 설계 범위 확정 요구사항 설정되어 있는 처리율을 초과하는 요청은 제한한다. HTTP 응답시간에 나쁜 영향을 주면 안되니 낮은 응답시간을 전제로 한다.적은 메모리하나의 처리율 .. -
[VMware Tanzu] Spring Boot 밋업 with Josh Long
[VMware Tanzu] Spring Boot 밋업 with Josh Long
2024.09.29인프런에 퇴근길 밋업으로 영상 제공되는게 있어서 들어보았다. 처음에는 개 입양서비스를 만드는 부분에 대해서 실시간 라이브 코딩을 진행했다. 스피커 Josh Long 분께서 말을 너무 잘하셔서 놀랐다.Spring Project를 바로 만드셨고 아래 Dependencies 를 하나씩 추가하셨다. 로컬호스트에서 프로젝트를 실행하고 데이터베이스까지 연결 확인해보려고 했는데 우선은 데이터가 없어서 스킵했다! 코드에서 Data Oriented Programming 방식을 지원하는데 Java 버전이 17 이후로 올라가면서 다음 문법들을 지원하게 되었다. sealed typesrecordspattern matching smart switch expressions 이러한 방식을 지원하는건 자바가 대규모 프로그래밍에서 .. -
spring batch partitioning
spring batch partitioning
2024.09.22spring batchmasterstep 이 slavestep 을 실행시키는 구조slavestep은 독립적으로 실행slavestep은 stepExecution 파라미터 환경 구성slavestep은 다음으로 구성(하위)ItemReader - ItemProcessor - ItemWriter - masterstep은 partitionStep 이다.(하위)slavestep은 taskletstep, flowstep 이 올 수 있다. partitioningpartitionStep파티셔닝 기능을 수행하는 Step 구현체PartitionHandlerPartitionStep 에 의해 호출되며 스레드를 생성해서 WorkStep을 병렬로 실행한다.StepExecutionSplitterWorkStep에서 사용할 StepExe.. -
카프카 주요 요소
카프카 주요 요소
2024.09.16kafka와 kafka 아키텍처의 주요 구성 요소Event/Message 전송을 위해 사용된다.장점 : 고가용성, 빠른 처리단점 : 순서보장이 어렵다. 아주 작게 사용이 어렵다.Distributed 나눠서 작업할 수 있다. Pub/sub -> 전달하는 쪽은 전달받은 쪽에 관여할 필요가 없다.Product, Consumber 가 존재한다.Server : Broker, Zookeeper는 Broker간의 분산처리 정보가 관리된다.3개 이상의 Broker 로 구성KSQL, Connector, Kstream 등의 추가 모듈KRaft를 통해 zookeeper 제거할 수 있음(Not Stable) RabbitMQErlang 으로 AMQP를 구현한 Message Broker SystemKafkaProducer -> .. -
Spring Batch 멀티 프로세스
Spring Batch 멀티 프로세스
2024.09.09FutureTask FutureTask task = new FutureTask(Callable) - Thread 가 수행하는 Task로서 Callable 을 실행시키고 결과를 Future에 담아 반환 - Runnable 은 스레드를 실행하고 코드를 실행할 수 있는 인터페이스를 제공하며, 반환 값을 가질 수 없다. 반면에 Callable 은레드를 실행하고 코드를 실행하면서 반환 값을 가질 수 있다. 스프링 배치 멀티 스레드 프로세싱Step 안에 ItemProcessor 가 비동기적으로 동작하는 구조AsyncItemProcessor 와 AsyncItemWriter 가 함께 구성이 되어야 함기본 처리 방식은 아래와 같다. JobStepItemReaderAsyncItemProcessor -> Item.. -
Spring Batch 5 migration guide
Spring Batch 5 migration guide
2024.09.01개요Spring Batch 5.0부터 JobBuilderFactory와 같은 일부 팩토리 클래스들이 deprecated 되었고, 대신 직접 빌더를 생성하는 방식으로 변경팩토리 메서드는 보통 매개변수가 숨겨져 있는 경우가 많아 코드의 동작을 이해하는 데에 다소 어려움 해결Spring Batch 5.0 Migration Guidetasklet, chunkTransactionManager 추가PlatformTransactionManager는 Spring이 제공하는 트랜잭션 관리 인터페이스로, 일반적으로 데이터베이스와 관련된 트랜잭션을 관리합니다.JobConfig 또는 BatchConfig에서 주입받는 PlatformTransactionManager는 보통 Spring이 관리하는 DataSourceTransac.. -
몽고디비 모델링, 자주사용하는 연산자 정리
몽고디비 모델링, 자주사용하는 연산자 정리
2024.08.19몽고디비(MongoDB)와 관계형 데이터베이스(RDBMS) 간의 모델링 차이관계형 데이터베이스에서는 보통 데이터를 여러 테이블에 나누어 저장합니다. 예를 들어, "사용자(User)"와 "주문(Order)"이라는 두 개의 테이블이 있다고 가정해보겠습니다.User 테이블 user_id (Primary Key) name email ...Order 테이블 order_id (Primary Key) user_id (Foreign Key referencing User) product_name order_date ... 이러한 구조에서, 특정 사용자의 모든 주문을 조회하려면 두 테이블을 조인(join)해야 합니다. 이는 다음과 같은 SQL 쿼리로 표현될 수 있습니다.SELECT u.name, o.product_name..