Recommend
-
24년 회고 & 25년 목표
올해를 돌아보며올해는 개인적으로 가장 큰 성과와 변화를 맞이한 년도라고 생각합니다.기술적으로나, 마음적으로나 학부 시절을 지내오며 그렸던 그래프들 중에서 가장 지수함수에 가까운 한 해였던것 같습니다.뒤를 돌아보며 올해 이룬 성과와 아쉬움을 나누고 더 나은 2025년을 겪기 위해 회고를 작성합니다. 개인적으로 소프트웨어 개발, 특히 서버 / 백엔드는 추상화의 꽃이라고 생각합니다. 이 때문에 많은 사람들이 학습에 어려움을 겪고, 저 또한 그랬던 것 같습니다.하지만 제게 맞는 학습 방법 무작정 많이 보고 익숙해지기 & GPT (항상 고마운) > 을 찾아가면서 점점 구체화 시켰던 시기였습니다. 물론 아직 많이 부족한 것은 다름 없습니다.올해의 마음가짐학부 4학년이 되면서 취업에 대한 욕심이 많이 생겼습니다. 여..
-
Spring Data JPA를 활용해 데이터베이스 샤딩하기
데이터베이스 생성-- 샤드 1 데이터베이스 생성CREATE DATABASE shard1; create table users( id int auto_increment primary key, name varchar(255) not null, age int not null);-- 샤드 2 데이터베이스 생성CREATE DATABASE shard2; create table users( id int auto_increment primary key, name varchar(255) not null, age int not null);샤드별 MySQL 서버 구성샤드는 다양하게 구현될 수 있습니다.하나의 데이터베이스 서버, 분리된 데이터베이스하나의 데이터베이스 서버, 분리된 테이블여..
-
처리율 제한 장치의 설계
네트워크 시스템에서 처리율 제한 장치는 클라이언트 / 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치입니다.요청 횟수가 제한 장치에 정의된 threshold (임계치)를 넘어서면 추가로 도달한 호출은 처리가 중단됩니다.예시는 다음과 같습니다.사용자는 초당 2회 이상 새 글을 올릴 수 없다.같은 IP주소로는 하루에 10개 이상의 계정을 생성할 수 없다.같은 디바이스로는 주당 5회 이상 리워드를 요청할 수 없다.이를 테면, 수강 신청 서비스의 연속 클릭(따닥) 또한 비슷한 맥락이라고 할 수 있습니다.문제 이해 및 설계 범위 확정이러한 처리율 제한 장치의 구현을 위해선 여러가지 알고리즘을 활용할 수 있고, 각각의 방법은 장단점을 가지고 있습니다.책에서는 면접관-지원자 구조로 요구사항을 이끌어 내고 있습니..
-
개략적인 규모 측정
규모 추정규모 추정이란 보편적인 사고 실험을 통해 추정치를 계산하는 행위입니다. 어떤 설계가 요구사항에 부합하는지 확인하기 위해 진행합니다.이를 위해서 프로그래머는 2의 제곱수, 응답지연 값 등을 잘 이해하고 있어야 합니다.기본적으로 메모리의 최소 단위는 1byte입니다. 1 byte = 8bit로 이루어져 있습니다. 2의 x 제곱근사치이름축약형101천 (Thousand)1 Kilobyte1KB201백만 (Million)1 Megabyte1MB3010억 (BIllion)1 Gigabyte1GB401조 (Trillion)1 Terabyte1TB501000조 (quadrillion)1 Petabyte1PB 현대의 저장용량은 급속도로 발전되어 왔기 때문에, 테라바이트까지는 익숙합니다. 프로그래머가 알아야 하는..
-
운영체제 - (2)
프로세스다음에 실행할 명령어의 PC를 가지고, 관련된 자원이 있는 실행 중인 프로그램즉, 실행 중인 프로그램의 인스턴스로서, PC와 관련된 자원을 포함하고 있습니다.프로세스는 다음과 같은 구성 요소를 가지고 있습니다.Stack : 함수를 호출할 때 임시 데이터 저장장소 (Top -> Bottom)Heap : 프로그램 실행 중 동적으로 할당되는 메모리 (Bottom -> Top)Data : 전역 변수Text : 실행 코드프로세스 상태프로세스는 다음과 같은 상태를 가질 수 있습니다.New(생성) : 프로세스가 새로 생성 중인 상태입니다Ready(준비) : 프로세스가 CPU에 할당되기를 기다리는 상태입니다. 이 상태에서 프로세스는 스케줄러에 의해 CPU 할당을 대기하며, 디스패처가 CPU 제어권을 넘겨주면 실..
-
운영체제 - (1)
컴퓨터의 하드웨어 자원을 효율적으로 관리하는 운영체제는 자원 관리, 프로세스 관리, 메모리 관리 등의 다양한 역할을 수행합니다. 인터럽트와 시스템 콜을 통해 빠른 입출력 처리를 가능하게 하며, DMA를 활용해 CPU 사용을 최적화합니다. 운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어입니다.응용 프로그램을 위한 기반을 제공하고, 시스템 자원을 관리, 스케줄링하며 효율적으로 사용할 수 있도록 합니다.컴퓨터 관점에서 운영체제는 하드웨어와 가장 밀접하게 연관되어 자원 할당자의 역할을 수행합니다.일반적으로 CPU는 코어당 1개의 물리(하드웨어) 스레드를 지원합니다. 이는 프로세서(코어)와 직결되므로 매우 빠르고 귀중한 자원입니다. 현대의 하드웨어 아키텍처는, 이렇게 귀중한 자원을 효율적으로 사용하기 ..
-
Redis Key Event Notification으로 지연 처리 구현하기
개요2024년도 7월부터 8월간, SOPT 34기를 진행하며, 프로젝트를 진행했습니다.한줄로 요약하자면, '답변을 제공받는 감사일기' 입니다. 답변은 가상의 캐릭터 '로디' 가 제공합니다.AI를 활용하여 일기를 작성하면, 일기에 대한 긍정적인 답변을 받을 수 있는 서비스 입니다.팀의 여건 상, AI 요청을 담당하는 서버와 인증 및 비즈니스 로직을 담당하는 백엔드 서버를 나누어 개발을 진행하게 되었습니다.따라서 사용자가 저희 백엔드 서버에 일기를 작성하면, AI 서버로 요청을 보내는 방식의 간단한 로직이 핵심 비즈니스 로직 이었습니다. 하지만, 요구사항이 점점 추가되었습니다.최종적으로 결정된 일기 작성에 관련한 요구사항은 다음과 같습니다.'일기에 대한 답장은 하루에 한번 받을 수 있다.','첫 일기 작성시..
-
Blocking / Non-Blocking, Synchronous / Asynchronous
동기와 비동기 ? Blocking Non-Blocking?개발을 공부하다 보면 동기 / 비동기라는 단어를 자주 접하게 됩니다. 또한 이 둘과 혼동될 수 있는 Blocking , Non-Blocking 개념도 종종 들을 수 있습니다. 미묘하게 다른 두 개념을 함께 살펴보겠습니다. BlockingOS관점의 블로킹은 프로세스가 어떤 작업을 위해 OS에 기능을 요청했는데 ( System Call ) OS가 해당 태스크를 바로 처리할 수 없을 경우, thread 를 “sleep” 혹은 “blocked” 상태로 변경합니다. 즉, CPU 큐에서 내려오고, 작업이 완료될 때 까지 대기합니다. 요청된 작업이 완료된 후에 OS는 thread를 깨웁니다.이렇게 스레드를 sleep 상태로 만들 수 있는 함수를 “blockin..
Popular
-
운영체제 - (2)
프로세스다음에 실행할 명령어의 PC를 가지고, 관련된 자원이 있는 실행 중인 프로그램즉, 실행 중인 프로그램의 인스턴스로서, PC와 관련된 자원을 포함하고 있습니다.프로세스는 다음과 같은 구성 요소를 가지고 있습니다.Stack : 함수를 호출할 때 임시 데이터 저장장소 (Top -> Bottom)Heap : 프로그램 실행 중 동적으로 할당되는 메모리 (Bottom -> Top)Data : 전역 변수Text : 실행 코드프로세스 상태프로세스는 다음과 같은 상태를 가질 수 있습니다.New(생성) : 프로세스가 새로 생성 중인 상태입니다Ready(준비) : 프로세스가 CPU에 할당되기를 기다리는 상태입니다. 이 상태에서 프로세스는 스케줄러에 의해 CPU 할당을 대기하며, 디스패처가 CPU 제어권을 넘겨주면 실..
-
24년 회고 & 25년 목표
올해를 돌아보며올해는 개인적으로 가장 큰 성과와 변화를 맞이한 년도라고 생각합니다.기술적으로나, 마음적으로나 학부 시절을 지내오며 그렸던 그래프들 중에서 가장 지수함수에 가까운 한 해였던것 같습니다.뒤를 돌아보며 올해 이룬 성과와 아쉬움을 나누고 더 나은 2025년을 겪기 위해 회고를 작성합니다. 개인적으로 소프트웨어 개발, 특히 서버 / 백엔드는 추상화의 꽃이라고 생각합니다. 이 때문에 많은 사람들이 학습에 어려움을 겪고, 저 또한 그랬던 것 같습니다.하지만 제게 맞는 학습 방법 무작정 많이 보고 익숙해지기 & GPT (항상 고마운) > 을 찾아가면서 점점 구체화 시켰던 시기였습니다. 물론 아직 많이 부족한 것은 다름 없습니다.올해의 마음가짐학부 4학년이 되면서 취업에 대한 욕심이 많이 생겼습니다. 여..
-
운영체제 - (1)
컴퓨터의 하드웨어 자원을 효율적으로 관리하는 운영체제는 자원 관리, 프로세스 관리, 메모리 관리 등의 다양한 역할을 수행합니다. 인터럽트와 시스템 콜을 통해 빠른 입출력 처리를 가능하게 하며, DMA를 활용해 CPU 사용을 최적화합니다. 운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어입니다.응용 프로그램을 위한 기반을 제공하고, 시스템 자원을 관리, 스케줄링하며 효율적으로 사용할 수 있도록 합니다.컴퓨터 관점에서 운영체제는 하드웨어와 가장 밀접하게 연관되어 자원 할당자의 역할을 수행합니다.일반적으로 CPU는 코어당 1개의 물리(하드웨어) 스레드를 지원합니다. 이는 프로세서(코어)와 직결되므로 매우 빠르고 귀중한 자원입니다. 현대의 하드웨어 아키텍처는, 이렇게 귀중한 자원을 효율적으로 사용하기 ..
-
Redis Key Event Notification으로 지연 처리 구현하기
개요2024년도 7월부터 8월간, SOPT 34기를 진행하며, 프로젝트를 진행했습니다.한줄로 요약하자면, '답변을 제공받는 감사일기' 입니다. 답변은 가상의 캐릭터 '로디' 가 제공합니다.AI를 활용하여 일기를 작성하면, 일기에 대한 긍정적인 답변을 받을 수 있는 서비스 입니다.팀의 여건 상, AI 요청을 담당하는 서버와 인증 및 비즈니스 로직을 담당하는 백엔드 서버를 나누어 개발을 진행하게 되었습니다.따라서 사용자가 저희 백엔드 서버에 일기를 작성하면, AI 서버로 요청을 보내는 방식의 간단한 로직이 핵심 비즈니스 로직 이었습니다. 하지만, 요구사항이 점점 추가되었습니다.최종적으로 결정된 일기 작성에 관련한 요구사항은 다음과 같습니다.'일기에 대한 답장은 하루에 한번 받을 수 있다.','첫 일기 작성시..
-
Blocking / Non-Blocking, Synchronous / Asynchronous
동기와 비동기 ? Blocking Non-Blocking?개발을 공부하다 보면 동기 / 비동기라는 단어를 자주 접하게 됩니다. 또한 이 둘과 혼동될 수 있는 Blocking , Non-Blocking 개념도 종종 들을 수 있습니다. 미묘하게 다른 두 개념을 함께 살펴보겠습니다. BlockingOS관점의 블로킹은 프로세스가 어떤 작업을 위해 OS에 기능을 요청했는데 ( System Call ) OS가 해당 태스크를 바로 처리할 수 없을 경우, thread 를 “sleep” 혹은 “blocked” 상태로 변경합니다. 즉, CPU 큐에서 내려오고, 작업이 완료될 때 까지 대기합니다. 요청된 작업이 완료된 후에 OS는 thread를 깨웁니다.이렇게 스레드를 sleep 상태로 만들 수 있는 함수를 “blockin..
Posts
-
24년 회고 & 25년 목표
올해를 돌아보며올해는 개인적으로 가장 큰 성과와 변화를 맞이한 년도라고 생각합니다.기술적으로나, 마음적으로나 학부 시절을 지내오며 그렸던 그래프들 중에서 가장 지수함수에 가까운 한 해였던것 같습니다.뒤를 돌아보며 올해 이룬 성과와 아쉬움을 나누고 더 나은 2025년을 겪기 위해 회고를 작성합니다. 개인적으로 소프트웨어 개발, 특히 서버 / 백엔드는 추상화의 꽃이라고 생각합니다. 이 때문에 많은 사람들이 학습에 어려움을 겪고, 저 또한 그랬던 것 같습니다.하지만 제게 맞는 학습 방법 무작정 많이 보고 익숙해지기 & GPT (항상 고마운) > 을 찾아가면서 점점 구체화 시켰던 시기였습니다. 물론 아직 많이 부족한 것은 다름 없습니다.올해의 마음가짐학부 4학년이 되면서 취업에 대한 욕심이 많이 생겼습니다. 여..
2024.12.31 16:49 -
Spring Data JPA를 활용해 데이터베이스 샤딩하기
데이터베이스 생성-- 샤드 1 데이터베이스 생성CREATE DATABASE shard1; create table users( id int auto_increment primary key, name varchar(255) not null, age int not null);-- 샤드 2 데이터베이스 생성CREATE DATABASE shard2; create table users( id int auto_increment primary key, name varchar(255) not null, age int not null);샤드별 MySQL 서버 구성샤드는 다양하게 구현될 수 있습니다.하나의 데이터베이스 서버, 분리된 데이터베이스하나의 데이터베이스 서버, 분리된 테이블여..
2024.11.20 18:49 -
처리율 제한 장치의 설계
네트워크 시스템에서 처리율 제한 장치는 클라이언트 / 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치입니다.요청 횟수가 제한 장치에 정의된 threshold (임계치)를 넘어서면 추가로 도달한 호출은 처리가 중단됩니다.예시는 다음과 같습니다.사용자는 초당 2회 이상 새 글을 올릴 수 없다.같은 IP주소로는 하루에 10개 이상의 계정을 생성할 수 없다.같은 디바이스로는 주당 5회 이상 리워드를 요청할 수 없다.이를 테면, 수강 신청 서비스의 연속 클릭(따닥) 또한 비슷한 맥락이라고 할 수 있습니다.문제 이해 및 설계 범위 확정이러한 처리율 제한 장치의 구현을 위해선 여러가지 알고리즘을 활용할 수 있고, 각각의 방법은 장단점을 가지고 있습니다.책에서는 면접관-지원자 구조로 요구사항을 이끌어 내고 있습니..
2024.11.18 17:16 -
개략적인 규모 측정
규모 추정규모 추정이란 보편적인 사고 실험을 통해 추정치를 계산하는 행위입니다. 어떤 설계가 요구사항에 부합하는지 확인하기 위해 진행합니다.이를 위해서 프로그래머는 2의 제곱수, 응답지연 값 등을 잘 이해하고 있어야 합니다.기본적으로 메모리의 최소 단위는 1byte입니다. 1 byte = 8bit로 이루어져 있습니다. 2의 x 제곱근사치이름축약형101천 (Thousand)1 Kilobyte1KB201백만 (Million)1 Megabyte1MB3010억 (BIllion)1 Gigabyte1GB401조 (Trillion)1 Terabyte1TB501000조 (quadrillion)1 Petabyte1PB 현대의 저장용량은 급속도로 발전되어 왔기 때문에, 테라바이트까지는 익숙합니다. 프로그래머가 알아야 하는..
2024.11.11 16:58 -
운영체제 - (2)
프로세스다음에 실행할 명령어의 PC를 가지고, 관련된 자원이 있는 실행 중인 프로그램즉, 실행 중인 프로그램의 인스턴스로서, PC와 관련된 자원을 포함하고 있습니다.프로세스는 다음과 같은 구성 요소를 가지고 있습니다.Stack : 함수를 호출할 때 임시 데이터 저장장소 (Top -> Bottom)Heap : 프로그램 실행 중 동적으로 할당되는 메모리 (Bottom -> Top)Data : 전역 변수Text : 실행 코드프로세스 상태프로세스는 다음과 같은 상태를 가질 수 있습니다.New(생성) : 프로세스가 새로 생성 중인 상태입니다Ready(준비) : 프로세스가 CPU에 할당되기를 기다리는 상태입니다. 이 상태에서 프로세스는 스케줄러에 의해 CPU 할당을 대기하며, 디스패처가 CPU 제어권을 넘겨주면 실..
2024.11.07 23:33 -
운영체제 - (1)
컴퓨터의 하드웨어 자원을 효율적으로 관리하는 운영체제는 자원 관리, 프로세스 관리, 메모리 관리 등의 다양한 역할을 수행합니다. 인터럽트와 시스템 콜을 통해 빠른 입출력 처리를 가능하게 하며, DMA를 활용해 CPU 사용을 최적화합니다. 운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어입니다.응용 프로그램을 위한 기반을 제공하고, 시스템 자원을 관리, 스케줄링하며 효율적으로 사용할 수 있도록 합니다.컴퓨터 관점에서 운영체제는 하드웨어와 가장 밀접하게 연관되어 자원 할당자의 역할을 수행합니다.일반적으로 CPU는 코어당 1개의 물리(하드웨어) 스레드를 지원합니다. 이는 프로세서(코어)와 직결되므로 매우 빠르고 귀중한 자원입니다. 현대의 하드웨어 아키텍처는, 이렇게 귀중한 자원을 효율적으로 사용하기 ..
2024.10.31 22:24 -
Redis Key Event Notification으로 지연 처리 구현하기
개요2024년도 7월부터 8월간, SOPT 34기를 진행하며, 프로젝트를 진행했습니다.한줄로 요약하자면, '답변을 제공받는 감사일기' 입니다. 답변은 가상의 캐릭터 '로디' 가 제공합니다.AI를 활용하여 일기를 작성하면, 일기에 대한 긍정적인 답변을 받을 수 있는 서비스 입니다.팀의 여건 상, AI 요청을 담당하는 서버와 인증 및 비즈니스 로직을 담당하는 백엔드 서버를 나누어 개발을 진행하게 되었습니다.따라서 사용자가 저희 백엔드 서버에 일기를 작성하면, AI 서버로 요청을 보내는 방식의 간단한 로직이 핵심 비즈니스 로직 이었습니다. 하지만, 요구사항이 점점 추가되었습니다.최종적으로 결정된 일기 작성에 관련한 요구사항은 다음과 같습니다.'일기에 대한 답장은 하루에 한번 받을 수 있다.','첫 일기 작성시..
2024.09.12 11:57 -
Blocking / Non-Blocking, Synchronous / Asynchronous
동기와 비동기 ? Blocking Non-Blocking?개발을 공부하다 보면 동기 / 비동기라는 단어를 자주 접하게 됩니다. 또한 이 둘과 혼동될 수 있는 Blocking , Non-Blocking 개념도 종종 들을 수 있습니다. 미묘하게 다른 두 개념을 함께 살펴보겠습니다. BlockingOS관점의 블로킹은 프로세스가 어떤 작업을 위해 OS에 기능을 요청했는데 ( System Call ) OS가 해당 태스크를 바로 처리할 수 없을 경우, thread 를 “sleep” 혹은 “blocked” 상태로 변경합니다. 즉, CPU 큐에서 내려오고, 작업이 완료될 때 까지 대기합니다. 요청된 작업이 완료된 후에 OS는 thread를 깨웁니다.이렇게 스레드를 sleep 상태로 만들 수 있는 함수를 “blockin..
2024.01.20 15:13