일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- programmers
- Vue.js
- DFS
- SQL
- SWEA
- 시뮬레이션
- spring boot
- JavaScript
- 알고리즘
- Data Structure
- 구현
- aws
- GitHub
- hash table
- Priority Queue
- 코딩테스트
- 모의SW역량테스트
- Linked list
- CSV
- gpdb
- BFS
- 알고리듬
- django
- 코테
- Trie
- Python
- Algorithm
- Bruth Force
- Back tracking
- boj
- Today
- Total
목록etc. (28)
hotamul의 개발 이야기

Start Schema ⭐️ What is Start Schema? Star Schema란 data warehouse, data marts와 같은 OLAP(Online Analytical Processing)에 적합한 multi-dimensional 데이터 모델이다. Star Shcema는 주로 대용량 데이터 셋을 조회하는데 최적화되어있다. 1990년대 Ralph Kimball에 의해 소개된 Star Schema는 데이터의 저장, history 유지, 데이터 업데이트를 효율적으로 처리하면서 반복적인 비즈니스의 정의의 중복을 줄이고 data warehouses에서 데이터를 집계하고 필터링하는데 빠르게 도와준다. Fact Tables and Dimension Tables Star Schema는 데이터를 Di..

각 서비스 마다 데이터 베이스가 따로 존재하는 Database per service 아키텍쳐를 사용하고 있을 때 각 서비스에 존재하는 데이터 베이스 일관성(consistency)을 어떻게 보장할 수 있을까? Two-Phase Commit Two-phase Commit(2PC)이란 여러 서비스에 거쳐 원자성 트랜잭션 commit을 달성하는, 굉장히 고전적인 방법이다. 2PC에서는 일반적으로 단일 서비스 트랜잭션에는 없는 Coordinator(트랜잭션 관리자)를 사용한다. Coordinator는 각 서비스에 준비 요청을 보내서 commit 가능 여부를 묻게 되고, 서비스의 응답에 따라 commit할지 rollback할지 결정한다. 모든 서비스가 정상적인 OK 응답을 하면 Coordinator는 commit ..

What is Prometheus? Prometheus SoundCloud에서 개발된 애플리케이션이나 서버, OS 등 다양한 대상으로 부터 지표를 수집/모니터링할 수 있는 tool kit으로, 지표 수집을 통한 모니터링을 주요 기능으로 하고 있다. Prometheus의 아키텍쳐는 다음과 같다. Pulling Prometheus는 Pulling 방식으로 데이터를 수집한다. 설정 파일의 모니터링 대상 목록에 대한 IP나 기타 접속 정보(prometheus.yml파일의 scrape_config)를 바탕으로 모니터링 대상의 자원 정보(metric)를 읽어 온다. 만약에 읽어오려는 정보가 Prometheus 데이터 포맷을 지원하지 않는다면 별도의 exporter를 이용해서 쉽게 읽어올 수 있다.(Node Expo..
DevOps DevOps란 개발과 운영 간 초점이 달라서 생기는 문제를 해결하기 위해(왜 빠르게 개발하고 적용해야 할까?), 빠른 개발 속도와 시스템 안정성 두 마리 토끼를 잡기 위한 일종의 도구 및 문화 또는 철학이다. What is DevOps? | Atlassian 개인적으로는 오늘의집 MSA Phase 1. DevOps - 오늘의집 블로그에서 DevOps와 DevOps 엔지니어의 역할에 대해 현실적으로 잘 설명하고 있다고 생각한다. class SRE implements interface DevOps? DevOps와 SRE를 설명할 때 많은 사람들이 책: The Site Reliablity Workbook by Google의 첫 번째 Chapter의 Subtitle인 "class SRE implem..
왜 빠르게 개발하고 적용해야 할까? 한 번도 고민해 본 적 없는 질문이었다. 처음에 이 질문을 들었을 때 들었던 생각은 "잘해야 하니까?"였다. 빠른 문제 해결, 빠른 피드백이 곧 실력 있는 개발자의 기준이라고 생각했던 것 같다. 하지만 "빠르게 개발하고 적용해야 해!"라고 말하면서 "왜?"를 생각해 본 적이 없었던 것 같다. 항상 주어진 시간 내에 새로운 기능을 내기 위해 개발 속도에 무게를 두고 있어서 "빠르게 개발하고 빠르게 적용해야 한다"는 것을 당연하게 느꼈던 것 같다. 이처럼 생각했던 게 틀렸다거나 잘못되었다고 생각하지는 않는다. 개발해야 하는 서비스와 주어진 역할에 충실하다 보니 자연스럽게 이러한 생각을 가지고 있었던 것 같다. 하지만 "잘해야 하니까?"라는 추상적인 대답을 조금 더 구체적인..

BigData Architecture Style 대용량의 데이터 소스에 대해 배치 작업과 실시간 스트리밍 처리 추가 분석을 위한 데이터 스토어 제공 분석 데이터를 서빙 참고: Microsoft Big data architectures Event-driven architecture style 이벤트 스트림을 생성하는 이벤트 생산자와 이벤트를 수신 대기하는 이벤트 소비자로 구성 생산자는 소비자와 분리 이벤트가 발생하면, 해당 이벤트를 구독하는 사용자가 이벤트를 수신 참고: Microsoft Event-driven architecture
리눅스에서 df 명령어로 파일 시스템 디스크 사용량을 확인해보면 tmpfs라는 이름의 file system을 확인할 수 있다. $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 29G 3.3G 26G 12% / devtmpfs 477M 0 477M 0% /dev tmpfs 484M 0 484M 0% /dev/shm tmpfs 97M 904K 96M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 484M 0 484M 0% /sys/fs/cgroup /dev/loop0 25M 25M 0 100% /snap/amazon-ssm-agent/6312 /dev/loop2 56M 56M 0 100% /snap/core18/2..
cgroup으로 CPU 제한하기에서 cgroup을 이용해 CPU 사용량을 제한시켜 보았다. 이번에는 cgroup을 이용해 Process 생성 개수를 제한하여 fork bomb에 대비할 수 있게 해보자. Test를 진행하기 위한 cgroup 생성 $ sudo su $ cd /sys/fs/cgroup/pids $ mkdir ./mycgroup && cd ./mycgroup $ ls cgroup.clone_children cgroup.procs notify_on_release pids.current pids.events pids.max tasks Process 생성 개수 제한 $ echo $$ > ./tasks $ cat pids.max max $ echo 20 > pids.max $ cat pids.max ..
cgroup이란? cgroup은 Linux 운영 체제에서 프로세스 그룹을 관리하는 기능이다. cgroup은 Control Group의 줄임말로, 다수의 프로세스 그룹을 묶어서 리소스 제한, 우선순위 설정 등을 할 수 있도록 한다. 예를 들어, 여러 개의 웹 서버 프로세스가 있을 때, cgroup을 사용하면 CPU, 메모리, 디스크 등 리소스를 공정하게 분배하거나 우선순위를 지정하여 특정 프로세스 그룹이 우선적으로 리소스를 할당 받도록 설정할 수 있다. 또한, cgroup은 서버 가상화 기술인 컨테이너에서도 사용된다. 컨테이너는 cgroup을 사용하여 호스트 운영 체제에서 가상화된 환경에서 독립된 프로세스 그룹을 생성하고 리소스를 관리하여, 컨테이너 간의 Resource Contention을 방지하고, 각..
sysstat, sar을 이용한 resource 모니터링에서 sar을 이용해 resource 사용량 확인 방법에 대해서 알아보았다. 아래는 python으로 해당 명령을 실행하고 결과를 print 하기 예시 import subprocess # sar 명령어 실행 sar_process = subprocess.Popen(['sar', '-u', '1', '3'], stdout=subprocess.PIPE) # sar 결과를 딕셔너리로 파싱 output = sar_process.communicate()[0].decode() lines = output.split('\n') header = lines[2].split() cpu_usage = {} for line in lines[3:]: if line: fields..