분류 전체보기 168

[SRE] Ch06. 분산 시스템 모니터링

이번 장에서는 사람을 반드시 호출해야 하는 이슈들은 어떤 것인지에 대한 가이드라인을 제공하고, 굳이 호출하지 않아도 되는 이슈들을 처리하는 방안에 대해 설명하고자 합니다. 1. 정의 모니터링과 관련된 논의들에 공통적으로 사용될 수 있을 만큼 통일된 용어는 아직 존재하지 않습니다. 하지만 가장 널리 사용되는 용어는 알아두면 좋을 것 같습니다. 모니터링 : 쿼리의 수와 종류, 에러의 수와 종류, 처리 시간 및 서버의 활동 시간 등 시스템에 대한 정량적 실시간 데이터를 모으고 처리하고 집계해서 보여주는 것을 말합니다. 화이트박스 모니터링 : 로그나 자바 가상 머신의 프로파일링 인터페이스 같은 인터페이스 혹은 내부의 통계 지표를 제공하는 HTTP 핸들러 등을 이용해서 얻은 시스템의 내부 지표들을 토대로 하는 ..

CS/SRE 2023.07.26

[SRE] Ch05. 삽질은 이제 그만!

SRE 조직은 단순한 운영 업무보다는 장기간의 엔지니어링 프로젝트를 수행하는 것을 더 선호합니다. 여기서 운영 업무라는 단어의 의미는 사람에 따라 다르게 해석될 수 있으므로 삽질이라고 표현하고 있습니다. 1. 삽질이란? 이 책에서는 프로덕션 서비스를 운영하는 것과 직접적으로 연관이 있지만 수작업을 동반하고, 반복적이며, 자동화가 가능하고, 사후 대처가 필요하며, 지속적인 가치가 결여되어 있으면서도 서비스의 성장에 따라 지속적으로 늘어나는 업무들을 말합니다. 각각의 상황에 대해서 조금 더 자세하게 살펴보겠습니다. 수작업을 필요로 한다. 예를 들면 자동화된 작업을 실행하기 위해 수작업으로 스크립트를 실행하는 경우를 말합니다. 물론 스크립트에 기술된 모든 단계들을 손으로 직접 처리하는 것보다는 스크립트를 실행..

CS/SRE 2023.07.19

[SRE] Ch04. 서비스 수준 목표

이번 장에서는 사용자에게 필요한 서비스의 적정 수준을 정의하고 제공하는 방법에 대해서 이야기하고자 합니다. 1. 서비스 수준 관련 용어 1.1 척도 SLI는 서비스 수준 척도(Service Level Indicator)를 의미하며, 서비스 수준을 판단할 수 있는 몇 가지를 정량적으로 측정한 값입니다. 대부분의 서비스들은 핵심 SLI로서 요청에 대한 응답 속도를 말합니다. 그 외에도 시스템이 수신한 전체 요청 수 대비 에러율, 그리고 초당 처리할 수 있는 요청 수를 의미하는 시스템 처리량 등이 있습니다. 알고자 하는 서비스 수준의 SLI를 직접 측정하는 것이 이상적이기는 하지만 경우에 따라서는 필요한 값을 얻어내거나 해석하기가 어려워 그에 준하는 대체 값을 사용하는 경우도 있습니다. (클라이언트 측의 응답..

CS/SRE 2023.07.18

[SRE] Ch03. 위험 요소 수용하기

프로젝트를 구현하다 보면 어느 정도 수준의 제품을 사용자 혹은 기업에게 제공해야 하는지 명확하지 않은 경우가 있습니다. 이런 상황에서 명확한 의사 결정을 수행할 수 있게 도와주는 내용에 대해서 정리해 보도록 하겠습니다 🧑🏻‍💻 사용자들은 적절하게 높은 수준의 신뢰성과 극대화된 신뢰성의 차이를 알아차리지 못한다. 사용자의 경험이란 모바일 네트워크나 그들이 사용하는 장비처럼 신뢰성이 낮은 컴포넌트들에 의해 좌우되기 때문에 알아차리지 못한다고 합니다. 신뢰성을 향상시키기 위해서는 엄청난 비용이 소모되며 신뢰성을 극대화하면 새로운 기능을 개발하는 속도나 사용자에게 제품을 출시하는 기간에 오히려 제동을 걸게 되며 비용이 상승하여 팀이 더 많은 수의 기능을 구현하는 데 방해가 될 수 있기 때문에 적절하게 높은 수준..

CS/SRE 2023.07.18

[Python] 정적 타입 검사 - mypy

오늘은 파이썬 관련 정적 타입 검사에 대해서 소개하는 시간을 가져보도록 하겠습니다. 정적 타입 검사가 왜 필요한 이유 파이썬은 동적 타입 언어로 구성되어 있기 때문에 다른 언어에 비해서 유연하고 빠르게 개발을 할 수 있습니다. 그렇다면 정적 타입 검사는 왜 필요할까요? 정적 타입 검사가 필요한 이유를 알기 위해서는 동적 타입 언어의 특징에 대해서 이해를 하고 있어야 합니다. 동적 타입 언어의 특징은 크게 두 가지가 있습니다. 첫 번째는 코드가 실행될 때 타입을 체크하는 것입니다. 위 코드를 보면 if False: 부분은 실행이 되지 않기 때문에 1 + "two"가 타입 에러를 발생시키는 코드이지만 에러가 발생하지 않습니다. 두 번째는 실행 시간 동안 변수의 타입을 변경할 수 있다는 것입니다. thing ..

Language/Python 2023.07.16

[SRE] Ch01 ~ 02. 소개

후니의 쉽게 쓴 네트워킹 스터디가 끝난 후 사이트 신뢰성 엔지니어링(Site Reliability Enginnering) 스터디를 하고 있습니다. 현재 데이터 엔지니어 직군으로 일하고 있는 저에게 후니의 쉽게 쓴 네트워킹과 사이트 신뢰성 엔지니어링 책 내용은 직접적으로 업무와 관련된 책은 아닙니다. 하지만 네트워크는 어떻게 구성되어 있는지, SRE 업무에 있어서 핵심은 무엇인지 파악하는 과정에서 시야가 많이 넓어질 것이라고 기대하고 있습니다 ! 오늘은 SRE 책 내용 중 Ch01 ~ 02 - 소개에 대해서 이야기를 하려고 합니다. 이 책은 현직 개발자가 사이트 신뢰성 엔지니어가 되기 위한 기술적인 토대를 갖추기 위한 책이 아니라, 사이트 신뢰성 엔지니어링 조직의 문화와 이념, 그리고 철학을 이해하고자 하..

CS/SRE 2023.07.11

[Python] Decimal이란

float 모듈 파이썬에서는 보통 float 타입으로 소수를 표현합니다. 하지만 소수점 이하의 정밀도가 항상 정확하지 않다는 문제점이 있어서 금융 계산과 같이 정확한 계산이 필요한 경우 Decimal을 사용하는 것이 좋습니다. float을 사용하면 왜 소수점 이하의 정밀도가 항상 정확하지 않을까요? 바로 부동소수점 방식을 통해 숫자를 표현하기 때문입니다. 예를 들어, 300은 3 x 10^2로 표현할 수 있고, 0.003은 3 x 10^-3로 표현할 수 있습니다. 부동소수점에서 숫자는 가수와 지수의 두 부분으로 분리되는데 가수는 숫자의 실제 자릿수를, 지수는 소수점의 위치를 결정합니다. 이렇게 설명하는 것보다 구체적인 예시를 보여주는 게 더 이해가 빠를 것이라고 생각하는데요. 0.75를 float타입으로..

Language/Python 2023.07.09

[ Python ] 점프 투 파이썬 전면 개정 2판 서평

안녕하세요 ! 이번에 좋은 기회가 생겨 '점프 투 파이썬 전면 개정 2판 서평'에 참여하게 되었습니다 👏👏. 책에 대한 후기를 말하기 전 간략하게 제 상황에 대해서 말씀드리겠습니다~! (궁금하지 않으셔도,,) 현재 파이썬을 주언어로 쓴 지 3년이 되어가고 있습니다. 3년이라는 시간이 적을 수도 있지만 개인적으로는 초급 단계를 넘어 중급 단계를 바라봐야 하는 시기라고 생각하였습니다. 따라서 지금까지 수행했던 프로젝트를 돌아보는 것뿐만 아니라 파이썬과 관련된 초급, 중급 개발서 1권씩 정독한 후 스스로의 레벨을 확인하고 싶었습니다. 초급 개발서로 가장 먼저 떠오른 것은 점프 투 파이썬이었습니다. 파이썬 공부를 시작할 때 가장 먼저 읽었던 책이기도 하고 개발에 재미를 느끼게 해 준 책이기 때문입니다. (중급 ..

Language/Python 2023.07.01

[Hive] Managed Table vs External Table

하이브에서 테이블을 생성할 때 Managed 또는 External 중 어떤 유형으로 생성할 것인지 결정할 수 있습니다. Managed 테이블은 내부 테이블이라고도 불립니다. Hive가 데이터와 메타데이터의 모든 부분을 관리하기 때문에 내부 테이블이라고 부루는 것 같네요. Managed 테이블 혹은 테이블의 특정 파티션을 삭제하면 해당 데이터도 삭제됩니다. External 테이블은 외부 테이블이라고도 불립니다. Hive 외부에 데이터가 저장되고, Hive는 메타데이터만을 관리하기 때문에 외부 테이블이라고 부르는 것 같네요. Managed 테이블과 다르게 External 테이블 혹은 특정 파티션을 삭제하면 Hive 메타데이터가 삭제되지만, 실제 데이터는 그대로 유지됩니다. 하이브 3.0 이전의 버전에서는 M..

Language/Hive 2023.01.09

[후니의 쉽게 쓴 네트워킹] 6장 스위치를 켜라!

스패닝 트리(Spanning Tree) 스위치나 브리지 구성에서 출발지부터 목적지까지의 경로가 2개 이상 존재할 때 1개의 경로만을 남겨두고 나머지는 모두 끊어두었다가, 사용하던 경로에 문제가 발생하면 끊어두었던 경로를 하나씩 살리는 프로토콜이다. 이를 통해 스위치나 브리지에서 발생하는 루핑을 막을 수 있다. 스패닝 트리 프로토콜을 이해하기 전에 먼저 2가지 개념을 이해해야 한다. 첫 번째는 브리지 ID이다. 브리지 ID란, 브리지나 스위치들이 통신할 때 서로를 확인하기 위해 하나씩 가지고 있는 번호라고 생각하면 된다. 16비트의 브리지 우선순위(Bridge Priority)와 48비트의 맥 어드레스로 구성되어 있다. 스위치 ID가 아니라 브리지 ID라고 부르는 특별한 이유는 없다. 스패닝 트리 프로토콜..

CS/네트워크 2022.12.10