CS 5

클라우드) 대규모 웹서비스 트래픽 처리 방법

먼저 대규모 웹서비스란 거대한 데이터를 처리해야 하는 서비스를 말한다. 웹서버를 둔 여러 대 기업들은 거대한 데이터를 처리해야 하는 방법을 항상 고민한다. 그 이유는 바로 고객에게 더 나 은 서비스를 제공하기위한 것이다. 대규모 웹서비스를 이용하는 고객들의 관점에서 보았을 때 어 떤 점이 중요한지 생각해보면 “지연 시간 단축”이다. 대규모 웹서비스 기반 운영되는 회사들은 다양한 이벤트를 진행하고 실시간 스트리밍, 대용량 검 색, 동영상 리뷰 등 다양한 신규 이벤트를 보이고 있다. 이 회사들은 대형 트래픽을 감당하는 방 패를 만들어 내야 하는 고민을 항상 하고 있다. 여기서 생각해보면 대형 성능/용량 이슈가 일어나 는 상황은 바로 “새로운 이벤트”가 발생할 경우가 대부분 이다. 트래픽(인터넷 사용량)이 급..

CS 2022.11.12

운영체제 - ClockAlgorithm

운영체제 - ClockAlgorithm 구현 1. Clock Algorithm 구조 분석 2. 수정 개념 설명 3. 다양한 테스트 케이스 및 설명 4. 소스코드 - With 충분한 주석 처리 paging-policy.py의 클락알고리즘 의 구조 분석 Clock Point : 클락이 가르키는 시침 빨간색 배경으로 설정 Use Bit : Use bit가 1이면 *, 0이면 아무것도 없음으로 설정 paging-policy.py Clock Algorithm을 짤 때 고려해야 할점 Hit 일때는 miss일 때 보다 간단하다. 왜냐하면 클락이 가르키는 바늘이 움직이지 않기 때문이다. 하지만 usebit는 변경 되기 때문에 고려 해주어야 한다. 1) Use bit가 1일 때 : memory index에 있는 n값의 ..

CS 2022.10.01

운영체제 - Reader Writer Lock 구현

★ Read-Writer Lock이 개선되었을 때의 Thread Trace 구현 ★ ◎ 쓰레드별 상태 추적 출력하기 - 파라미터 입력 방법 구현 (예: command line parameter 처리) - 다양한 시나리오 생성 및 설명 - 각 시나리오에 대한 실제 실행 결과 ◎ Reader-Writer Lock 개선 - Starvation 현상이 제거되도록 개선(Writer가 기다리는데 Reader가 계속 도착하면 발생 ◎ 개선된 Reader-Writer Lock을 사용해서 사용한 여러 시나리오를 실행하고 결과를 비교 Q1) 파라미터 입력 방법 구현 (예: command line parameter 처리) - 파라미터 입력 방법은 Command line argument으로..

CS 2022.09.26

CS 공부) 좋은 코드란 무엇인가?

과연 좋은 코드는 무엇일까? 좋은 코드란 중복이 없는 코드, 가독성이 좋은 코드라고 말 할 수 있다. 더 정확히 말하자면 좋지 않은 코드가 없는 코드가 좋은 코드라고 말 할 수 있다. 좋은 코드를 작성하려고 노력하는 대신 좋지 않은 코드를 줄여보자. 그리고 격리해보자. 작성된 모든 코드는 결국 유지 보수 비용이 필요하다. 궁극적으로 우리의 코드는 점진적으로 개선이 가능해야 한다 여기서 말하는 좋지 않은 코드는 무엇일까 ? 첫 번째는 거리이다. 함수를 구현한 위치와 함수를 실행하는 위치의 물리적 거리가 너무 멀면 좋지 않은 코드라고 할 수 있다. 이러한 부분이 많아지면 함수의 구현 내용이 무엇인지 빠르게 파악하기 힘들며 가독성이 점점 떨어지는 일이 일어나기 때문이다. 두 번째는 순수하지 않은 함수이다. 함..

CS 2022.09.19

CS 공부) 객체 지향 프로그래밍이란 무엇인가

Object Oriented Programming (객체 지향 프로그래밍) 객체 지향 프로그래밍 이전의 프로그래밍 패러다임을 살펴보면, 중심이 컴퓨터에 있었다. 컴퓨터가 사고하는대로 프로그래밍을 하는 것이다. 하지만 객체지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 할 수 있다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다. 현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것이다. 이것을 추상화라한다. OOP 로 코드를 작성하면 이미 작성한 코드에 대한 재사용성이 높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보 할 수 있다. 또한 라이브러리를 각종 예외상..

CS 2022.01.08