본문 바로가기

웹/책 & 강의13

클린코드 복습 겸 일부 정리. 모든 장은 결론부터 서술됨 6장. 객체와 자료구조 객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다. 이런 어려움을 해소하고자 방문자 패턴 등을 사용한다. 자료구조는 별다른 동작 없이 자료를 노출한다. 무지성으로 get, set 함수를 제공하는 클래스도 자료구조로 분류한다. 기존 자료구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다. 우수한 개발자는 편견없이 이 사실을 이해해 직면한 문제에 최적인 해결책을 선택해야 한다. 디미터 법칙은 "모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다"는 법칙이다. 좀 더 정확하겐, "클래스 C의 메서드 f.. 2022. 7. 26.
그림으로 공부하는 IT 인프라 구조 [성능 향상] [8장] 성능 향상을 위한 인프라 구조 성능 분석의 시작은 병목현상의 위치를 정확히 파악하는 것. 각 서버의 처리량이나 응답 상황 로그를 취득하는 방법 사용. 3계층 그림을 그려가면서 진행하면 커뮤니케이션에 도움. 병목 위치를 파악했다면, 작은 단위로 세분화해서 병목 영역을 더 집중적으로 파헤친다(튜닝). 성능 문제 해결은 이론보다는 경험으로 습득하는 경우가 많다. 시스템에 어느 정도의 요청이 올지는 실제 요청이 오기 전까지는 알 수 없다. 이것이 IT인프라에서 성능 문제가 발생하는 이유 중 하나. CPU병목 run queue 과다. - 코어수 늘리거나 서버 스케일 아웃하여 처리량 증가, 스케일업해서 응답시간 개선.. 대부분의 경우, CPU사용률이 100%에 도달하는 경우는 거의 없다. 그 전에 I/O에.. 2022. 2. 5.
그림으로 공부하는 IT 인프라 구조 [무정지] [7장] 무정지를 위한 인프라 구조 안정성(HA), 물리서버/저장소(storage)/버스/웹서버/AP서버/DB서버/L2스위치/L3스위치 이중화, 생존/로그/성능/콘텐츠 감시, 백업 고가용성, HA: 가능한 한 멈추지 않도록 하는 것 failover: 액티브-스탠바이 구성에서 액티브에 문제가 발생했을 때 스탠바이가 액티브로 변경되는 것. 이중화: HA + 부하분산 + scalability connection pooling: DB서버와 연결을 사전에 여러 개 생성하는 기능 SNMP: 감시 전용 프로토콜 (네트워크 장비, 서버 가동 상태, 서비스 상태, 시스템 리소스, 트래픽 등등) 콘텐츠 감시: URL을 쏴서 상태코드 보는 것. 일반적으로 로드밸런서가 담당. 이상 감지하면 해당 서버에 요청 할당 안함. SP.. 2022. 2. 4.
그림으로 공부하는 IT 인프라 구조 [응용이론, 네트워크] [5장] 인프라를 지탱하는 응용이론 캐시, 인터럽트, 폴링, I/O 크기, 저널링, 복제, 마스터-워커, 압축, 오류검출 캐시는 데이터 갱신이 많은 시스템에서 불리할 수 있다. 리눅스의 NTP(시간동기)처리는 폴링방식으로 ntp 서버에 질의하는 방식 DB의 IO블록 크기는 fs의 블록크기를 고려해야 한다. 마스터-워커는 상호 접속관계의 일종으로, 한 서버가 관리자가 돼 모든 것을 제어한다. 피어 투 피어 오류검출: checksum, parity bit 소개 저널링 성능이 최우선인 시스템엔 부적합할 수 있다. 저널: 트랜잭션이나 매일 갱신되는 데이터의 변경 이력을 가리킴. 저널을 남기는 것을 저널링이라고 한다. 데이터의 일관성이나 일치성이 확보되면 필요 없어진다. 데이터 복구 시 rollback, roll.. 2022. 2. 4.