전체 글

Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 만능 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험했던 내용과 공부했던 내용을 기록합니다. 🐻‍❄️☁️
실제 프로덕션 환경에서는 유저 데이터 등 유출되면 치명적인 데이터가 있다. 이러한 보안 문제를 해결 하기 위해, Databricks Workspace를 구성할 때 인터넷을 거치지 않는 private link 구성을 활용했다. 위의 그림처럼, Control Plane 과 Data Plane 간의 통신을 구성하기 위해서 AWS Private Link 를 사용하여 구성했다. 크게 2가지로, Secure Cluster Connectivity 를 위한 VPC endpoint 와 REST APIs 를 위한 VPC endpoint 를 생성해주면된다. 참고로 Front-end VPC endpoint 는 따로 생성해주어도 괜찮지만, 사실 Backend REST API와 동일한 서비스이므로 같은 VPC endpoint 를..
데이터의 접근 데이터가 저장되어 있는 위치에서 읽어와서 연산을 함. 연산결과를 다시 원래 위치에 저장. Race Condition - 경쟁상태 Storage-Box (Memory, Address Space)라는 것을 여러 Excution Box(CPU, Process)가 공유한다면 생기는 문제 Multiprocessor system 이나 공유 메모리를 사용하는 프로세스들, 커널 내부 데이터를 접근하는 루틴들 간 경쟁 상태의 가능성이 있다. OS에서의 Race Condition 1. Kernel Mode 경쟁상태 발생 : Kernel Mode 중 인터럽트가 발생해서 인터럽트 처리 루틴이 수행되는 경우에, 양쪽 다 커널 코드이므로 kernel address space를 공유하게 된다. 이렇게 kernel 에..
·Algorithm (PS)
예전에 풀었었는데, 재채점 이후에 틀렸다고 그래서 다시 풀게 되었다. https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, www.acmicpc.net 1차 시도 # https://www.acmicpc.net/problem/17142 import sys from collections import deque from itertools import combinations input = sys.stdin.readline dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] n..
https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위의 프로세스 문제를 풀다가 좋은 풀이라고 하는 코드에서 any()함수가 등장해서 정리! any() 함수 list 의 원소를 필터링하거나 조건 검사하는데 사용한다. 어떠한 조건을 만족하는 어떠한 원소가 현재 리스트에 있는지 없는지를 Bool 값으로 반환한다. test = [2,5,3,6,7,8,9,1,10] check = any(x > 5 for x in test) print("5보다 큰 어떠한 ..
스케줄링 알고리즘은 크게 non-preemptive / preemptive 방식으로 나뉘게 된다. Scheduling Criteria 성능 척도 CPU utilization (이용률) : 전체 시간중에서 CPU 가 일한 시간. CPU 는 가능한 busy 해야 한다. - CPU 는 비싼 자원이기 때문에 효율적으로 활용하기 위해서는 CPU 는 항상 일을 해야 한다. Throughput (처리량) : 주어진 시간동안 몇개의 프로세스들을 완료 했는가 Turnaround time (소요시간, 반환시간) : 특정 process를 실행하는데 걸리는 시간 Waiting time (대기 시간) : 프로세스가 ready queue에서 대기하고 있는 시간 Response time (응답 시간) : 요청이 왔을 때 처음으로 ..
CPU & I/O burst CPU burst : CPU를 사용하여 작업하는 부분 I/O burst : I/O 작업을 수행하는 부분 프로그램은 CPU burst 와 I/O burst 번걸아서 연속적으로 실행된다. CPU Burst Time의 분포 I/O bound job : CPU 를 잡고 계산하는 시간 보다 I/O에 많은 시간이 필요한 job 이다. 위의 그래프에서 알 수 있듯이 CPU burst를 짧게, 빈도는 많이 사용할 것이다. CPU bound job : CPU를 잡고 계산을 위주로 하는 job이다. CPU를 길게 연속적으로 사용하며 CPU burst 빈도는 적게 일어난다. 여러 종류의 job (= process) 이 섞여 있기 때문에 CPU 스케줄링을 통해, 자원을 효율적으로 사용해야 한다. ..
프로세스 간 협력 프로세스는 독립적이다. 각자 주소공간을 가지고 수행되기 때문에 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미치지 못한다. 그렇지만 프로세스 간 협력 메커니즘 (Inter Process Communication)을 통해, 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있다. IPC에는 크게 message passing 과 shared memory 기법이 있다. Message Passing 원칙적으로 프로세스끼리 직접 통신을 하지 않으므로, 운영체제의 커널을 통해 메세지를 전달하는 방법 1. Direct Communication 통신하려는 프로세스의 이름을 명시적으로 표시하는 방법 커널을 통해 다른 프로세스에게 메세지를 넘긴다. 2. Indirect Communi..
시스템 콜의 종류 4가지에 대해 알아본다. 프로세스 생성, 실행, 종료와 관련된 주요 4가지 시스템 콜은 다음과 같다. fork() : 복제본 child process를 생성한다. exec() : 새로운 프로그램으로 overlay 한다. wait() : child process 작업이 끝날 때까지 sleep 한다. exit() : 모든 resource들을 free 시키고, parent node에게 이를 알린다. fork() 시스템 콜 process는 fork() 시스템 콜에 의해 생성된다. caller 를 복사해서 새로운 주소 공간을 생성한다. fork() 를 통해서 프로세스를 생성하는 예시이다. int main() { int pid; printf("Only parent process print this..
minjiwoo
MJ workspace