CS - 개인 7

CPU 스케줄링 (FCFS, SJF, HRN, Priority, SRT, RR, MQ, MFQ)

출처 https://rebro.kr/175 https://aeroej.tistory.com/143 https://code-lab1.tistory.com/45  개인의 견해 및 추가 정리 내용이 포함되어 있습니다.   목차     CPU 스케줄링- 실행 중인 프로세스 간 처리 순서를 정하는 행위- 즉, 레디 큐에서 대기하는 프로세스 간에 CPU 자원을 분배하는 방법론 및 구현- 스케줄링 평가 지표 :프로세스 관점 - 대기 시간, 처리 시간, (최초) 응답 시간CPU 관점 - 단위 시간 당 처리량(Throughput), CPU 이용률, 컨텍스트 스위칭으로 인한 오버헤드 CPU 스케줄링의 구분 - 선점 여부에 따라 비선점 (Non-Preemptive) 스케줄링- 한 프로세스가 점유 중인 CPU를 다른 프로..

모듈(Module), 결합도(Coupling), 응집도(Cohesion)

출처 https://ko.wikipedia.org/wiki/.. https://itwiki.kr/w/.. https://madplay.github.io/post/.. https://inpa.tistory.com/entry/..  개인의 견해 및 추가 정리 내용이 포함되어 있습니다.   목차     모듈 (Module)- 소프트웨어를 기능별로 구분한 리소스 단위이며, 이를 분류하는 과정을 모듈화(Modularization)라고 한다.- 하나의 기능을 달성하기 위해 동작하며, 독립적으로 컴파일 가능한 모든 단위가 포함된다.e.g. 프로그램, 클래스, 함수 모듈(화)의 장점1. 단일 장애의 전파를 최소화 할 수 있다.2. 장애 파악이 쉽고 픽스에도 용이하다.3. 구조 파악이 쉽고, 기능별 단위 테스트에 ..

CQRS (Command and Query Responsibility Segregation) Pattern

출처 https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs  개인의 견해 및 추가 정리 내용이 포함되어 있습니다.   목차  CQRS (Command and Query Responsibility Segregation)데이터 저장소에 대한 쓰기(Command) 및 읽기(Query) 작업을 분리하는 패턴시스템의 확장에 용이하고, 성능 및 보안에 유리하다.업데이트 명령이 도메인 수준에서 병합 충돌을 일으키는 것을 방지할 수 있다. 기존 아키텍처의 문제 - CQRS의 필요성 기존 아키텍처(전통적인 서비스)에서는 동일한 모델을 사용하여 DB에 읽기 및 쓰기를 수행한다.이는 간단한 CRUD 작업에 문제가 없지만, 복잡한 애플리케이션에서는 문제 사항이..

CS - 개인/CQRS 2024.10.09

IP/브로드캐스트/네트워크/게이트웨이 주소, 서브넷, 유효 IP 범위

목차 개요해당 문제를 접하며 탐구하였다. Q. IP 주소 및 서브넷마스크 : 192.168.3.150/26가 일 때,게이트웨이 주소 값은? A. 192.168.3.129 현대에서, 단일 IP 주소 외에도 일반적으로 연속적인 여러 개의 IP 주소들을 할당 받을 수 있다.이 때, 특정 서브 네트워크를 다시 대표하는 네트워크와 서브 네트워크들로 분리하여 관리할 수 있다.  요약 IPv4 기준IP 주소 : 192.168.3.150 = 11000000.10101000.00000011.10010110(2)서브넷 마스크 : 255.255.255.192 = 11111111.11111111.11111111.11000000(2) = /26네트워크 주소 : 192.168.3.128 (IP 주소 AND 서브넷 마스크)브로드캐..

CS - 개인/Network 2024.08.17

테스트 대역 (Test Double)

목차 테스트 대역 (Test Double)실체 객체 대신 테스트 목적으로 사용되는 모든 종류의 가상 객체단위 테스트나 통합 테스트 등 다양한 테스트 시나리오에서 중요한 역할을 하며, 실제 의존성이나 환경에 의존하지 않고 코드를 검증할 수 있도록 돕는다. 주로 Dummy, Stub, Spy, Mock, Fake를 사용하며, 특히 Mock과 Stub의 차이를 인지할 필요가 있다. Dummy형식적인 목적을 위해 사용되는 객체로, 실제 데이터나 로직은 담고 있지 않은 단순한 객체이다.이는 곧 파라미터를 채우는 용도, 인터페이스 요구 사항 충족 용도로 사용된다. UserService 클래스가 있다고 가정해보자.해당 클래스는 login 기능이 있으며, UserDto를 파라미터로 전달받는다.이 때, login 기능을..

파티셔닝(Partitioning) VS 샤딩(Sharding)

목차 Data(Base) 분산데이터를 한 곳에 저장한다면 관리에 용이하다. 다만, 데이터가 늘어갈수록 용량 및 성능에 지장이 생긴다.다음은 이를 막기 위한 DB 분산 전략이다. 복제(Replication) : 전체 데이터베이스 또는 그 하위 집합을 여러 서버에 복사하여 각 서버가 읽기 요청을 독립적으로 처리할 수 있도록 분산. 한 서버의 데이터에 대한 모든 변경 사항은 다른 서버로 전파하여 처리한다.페더레이션(Federation) : 사용자 기반의 서로 다른 부분을 제공하는 여러 개의 작은 데이터베이스로 구성된 데이터베이스 생성파티셔닝(Partitioning), 샤딩(Sharding) : 데이터베이스를 작은 부분으로 나누어 분산 저장하는 방식 현대에서는 3번 방식을 주로 사용한다. 시스템의 특성에 따라 ..

테스트 주도 개발 (TDD, Test Driven Development)

목차 개요일반적인 개발 방식에서는 요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포의 개발 주기를 갖는다. 이 방식의 단점은 다음과 같다. - 소비자의 요구사항은 명확하지 않거나 변경될 수 있다.- 이에 따라, 설계 또한 변경된다. 이를 배제해도 애초에 완벽한 설계란 어렵다.- 이에 따라, 구현 또한 변경된다. 수정 과정에서 소스코드 품질이 저하될 수 있다.- 단위 유닛의 테스트를 위해 연관한 모든 부분을 테스트해야 한다. 테스트 비용 증가 외에도 전반적인 버그 검출이 어려워진다. 이를 보완하기 위한 방법중 하나로, TDD가 있다. 테스트 주도 개발 (TDD, Test Driven Development)테스트 작성 이후, 이를 통과하는 소스 코드를 작성하는 프로세스를 짧은 주기로 반복하는 개발 ..

CS - 개인/TDD 2024.06.10