독서

    [객체지향의 사실과 오해] 인사이트 정리 겸 회고

    객체지향의 사실과 오해를 읽고 인사이트 정리 겸 회고 읽기 시작한 지는 꽤 되었지만, 이런저런 이유로 미루고 미루다 회사에서 객체지향 프레임워크도 다루기 시작했고 읽고 싶었던 책을 읽기 위해 밀린 책을 쳐낼 겸 독파했다.. 밀렸던 블로그도 이를 계기로 다시 시작할 예정 이제는 보여주기식이 아닌 진짜 일기장처럼 끄적임으로 작성해야겠다고 다짐ㅋㅅㅋ 초중반 부분은 객체지향의 패러다임과 객체지향 사고의 관점을 이해시키기 위해 카페의 생리(손님 점원 바리스타)와, 이상한 나라의 앨리스에서 재판을 받는 부분(왕 하얀 토끼 모자장수)을 비유 삼아 이야기를 풀어나간다. 개인적으로 객체지향은 학교 수업만 듣고 자꾸 클래스에 한정 지어 생각하고 개념적으로 붕 떠있는 부분들이 있었는데, 이러한 비유들로 접근하니 좀 더 구체..

    [데이터 중심 애플리케이션 설계] 저장소와 검색

    데이터 중심 애플리케이션 설계를 독파하며 정리하는 글입니다. # 데이터베이스를 강력하게 만드는 데이터 구조 세상에서 제일 간단한 데이터베이스를 구현해 보자. #!/bin/bash db_set () { echo "$1,$2" >> database } db_get () { grep "л$1," database | sed -e "s/A$1,//" | tail -n 1 } 키-값 저장소를 함수 두 개로 구현한 예시이다. 이런 방식으로 데이터베이스를 구성할 경우 db_set()은 좋은 성능을 보인다. 단순히 파일의 끝에 데이터를 추가해 주기만 하기 때문이다. 실제로 많은 데이터베이스의 로그는 이런 append-only 방식의 데이터 파일을 사용한다. 다만, db_get()의 경우 문제가 있다. 데이터베이스에 많은..

    [데이터 중심 애플리케이션 설계] 데이터 모델과 질의 언어

    데이터 중심 애플리케이션 설계를 독파하며 정리하는 글입니다. 데이터 모델은 소프트웨어 개발에서 중요한 부분임. 소프트웨어가 어떻게 작성됐는지 뿐만 아니라, 해결하려는 문제를 어떻게 생각해야 하는지에 대해서도 영향을 미치기 때문. 또한, 데이터 모델은 그 위에서 소프트웨어가 할 수 있는 일과 할 수 없는 일에 영향을 주므로 애플리케이션에 적합한 데이터 모델을 선택하는 작업이 상당히 중요함. # 관계형 모델과 문서 모델 오늘날 가장 잘 알려진 데이터 모델은 관계형 모델을 기반으로 한 SQL임. SQL에서 데이터는 테이블(table)이라 불리는 관계(relation)로 구성되고, 각 관계는 로우(row)라 불리는 순서 없는 튜플(tuple)의 모음이다. 관계형 데이터 베이스의 근원은 비즈니스 데이터 처리에 있..

    [데이터 중심 애플리케이션 설계] 신뢰성, 확장성, 유지보수성

    데이터 중심 애플리케이션 설계를 독파하며 정리하는 글입니다. 요즘의 애플리케이션은 CPU의 성능보다 데이터의 양, 데이터의 복잡도, 데이터의 변화 속도가 문제이며, 필수 요소는 다음과 같다. 애플리케이션의 필요 요소 구동 애플리케이션이나 다른 애플리케이션에서 나중에 다시 데이터를 찾을 수 있게 데이터를 저장함 (데이터 베이스) 읽기 속도 향상을 위해 값비싼 수행 결과를 기억함 (캐시) 사용자가 키워드로 데이터를 검색하거나 다양한 방법을 통해 필터링할 수 있게 제공함 (검색 색인, search index) 비동기 처리를 위해 다른 프로세스로 메시지를 보냄 (스트림 처리, stream processing) 주기적으로 대량의 누적된 데이터를 분석 (일괄 처리, batch processing) 또한, 소프트웨어..