본문 바로가기

Book

[대규모 서비스를 지탱하는 기술] 대규모 데이터 처리 입문 '대규모 서비스를 지탱하는 기술' 이란 책을 정리한 내용입니다. 대규모의 기준은? 하테나 북마크의 데이터 규모를 예로 들었다 레코드 수 데이터 크기 entry 테이블 : 1,520만 엔트리 엔트리 : 3GB bookmark 테이블 : 4,500만 북마크 북마크 : 5.5GB tag 테이블 : 5,000만 태그 태그 : 4.8GB HTML : 200GB 이상 Google이나 Yahoo와 비교햇을때는 하테나는 대규모~중규모 수준이다. entry 테이블을 인덱스없이 조회시 약 200초가 걸린다. select url from entry use index(hoge) where eid = 9615899 대규모 데이터는 어떤 점이 어려운가? 메모리 내에서 계산이 불가할 경우, 디스크에 있는 데이터를 검색하게 된다. .. 더보기
[Clean Code] 함수 로버트 C. 마틴의 Clean Code, 애자일 소프트웨어 장인정신이라는 책의 내용을 정리한 내용입니다. 작게 만들어라! 함수를 만드는 첫번째 규칙으로 함수를 '작게' 만드는 것이다. 무조건적으로 작은 함수가 좋다는 근거를 대기는 곤란하지만, 일반적으로 함수를 작게 구현하는 것이 좋다고 저자는 말하고 있다. 블록과 들여 쓰기 if 문/ else 문/ while 문 등에 들어가는 블록은 한 줄이어야 한다. 함수에서 들여 쓰기 수준은 1단이나 2단을 넘어서면 안 된다. - 이 부분은 인지하고 있지만 막상 작업을 하다 보면 놓칠 때가 많다 (습관을 들여야 한다.) 한 가지만 해라 함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야 한다. 여기에서 표현하는 '한 가지'란 지정된 함수.. 더보기
[Clean Code] 의미 있는 이름 로버트 C.마틴 의 Clean Code, 애자일 소프트웨어 장인정신 이라는 책의 내용을 정리한 내용입니다. 의도를 분명히 밝혀라 존재이유, 수행기능, 사용방법을 생각하여 변수명을 지어야하며, 해당 변수에 주석이 필요하다면 의도를 분명히 드러내지 못했다는 것을 의미한다. int d; // 경과 시간 (단위: 날짜) 위 코드를 보면 d라는 변수를 사용하고있는데, 해당 변수는 day를 나타낼수있겠지만 주석없이는 day를 의미하는지 알수없다. int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 위 코드와같이 의도가 드러나는 이름을 지어줌으로 다른 개발자가 봤을때도 한눈에 코드가 하는 일을 짐작할 수 .. 더보기