밑줄 그은 책

Designing Data-Intensive Applications

Martin Kleppmann, Chris Riccomini

데이원 멤버 7이 이 책을 서재에 담았고, 6의 구절을 남겼습니다.

멤버들이 밑줄 그은 문장

  • The limits of my language mean the limits of my world. Data models are perhaps the most important part of developing software, because of the profound effect they have not only on how the software is written, but also on how we think about the problem that we are solving.

    개발은 결국 현실을 해석하는 하나의 언어를 만드는 행위라는 생각이 든다. 적절한 데이터 모델이라는 언어를 선택하고 설계할 수 있는 사람이라는 점에서, 항상 문제가 무엇인지 명확히 정의하고 그 문제들을 풀기 위한 데이터 구조나 관계에 대한 설계를 하는 것이 중요하다 생각한다.

    김동욱

  • by deliberately inducing faults, you ensure that the fault-tolerance machinery is continually exercised and tested, which can increase your confidence that faults will be handled correctly when they occur naturally.

    우리서비스는 내결함성을 만족하고자 특정 서비스가 여러 다중서버로 분산처리되는데, 관리하는 인스턴스 여러개가 한번에 죽거나 부하를 받으면 어떻게 되지? fault injection 한번 해보고 싶다. 물론 프로덕션은 아니다 하하하 사실 몰래해보고 싶긴하다 ㅎ

    채기중

  • However, these all require an investment of time and money, and in the pragmatic reality of everyday business, organizations often prioritize revenue-generating activities over measures that increase their systems’ resilience against mistakes. Then, when a preventable mistake inevitably occurs, blaming the person who made the mistake does not make sense; the problem is the organization’s priorities.

    소프트웨어에서 미리 예방할 수 있는 문제가 생겼다면, 그 책임은 개인보다 안전성에 대한 투자를 뒤로 미룬 조직의 우선순위에 있다는 내용이다. 최근에 우리 제품에서 핵심 가치로 여기는 기능이 제대로 동작하지 않았던 일이 있었다. 가장 큰 문제는 이 기능이 제대로 동작하지 않는 것을 아무도 인지하지 못하고 있었다는 점이다. 공격적인 성장을 위해 기능 개발을 우선시 하는 것도 중요하지만, 지금 우리가 가지고 있는 무기를 제대로 관리하는 것도 매우 중요하다고 생각한다. 그럴듯한 포장으로 일회성 구매를 만들어낼 수는 있겠지만, 그것만으로는 지속가능한 신뢰를 쌓기 어렵다고 생각한다. 그래서 새로운 기능 개발과 핵심 기능의 유지보수는 어느 하나만 우선할 일이 아니라 반드시 병렬적으로 함께 가야 한다. 나는 이 밸런스를 유지하는 것이 소프트웨어를 만드는 데 있어 중요한 본질 중 하나라고 생각한다.

    김동욱

  • Humans design and build software systems, and the operators who keep the systems running are also human. Unlike machines, humans don’t just follow rules; one of their strengths is being creative and adaptive in getting their jobs done. However, this characteristic also leads to unpredictability, and sometimes to mistakes that can lead to failures, despite best intentions.

    요즘 앱들을 보면 AI 활용률이 높아지면서 생산성이 높아지고 있다고 느낀다. 하지만 그에 따라 평소라면 발생하지도 않았을 에러들도 많이 보인다. 이 문장은 시스템을 만드는 것도, 운영하는 것도 결국 사람이라는 점을 다시 상기시킨다. AI가 점점 많은 일을 대신하는 시대일수록 중요한 것은 인간이 책임과 판단의 중심에 남아 있는 것이라고 생각한다. AI는 우리의 생산성을 높여주는 강력한 도구이지만, 방향을 정하고 최종적인 책임을 지는 것은 결국 사람의 역할이지 않을까.

    김동욱

  • There are no solutions. There are only trade-offs. … But you try to get the best trade-off you can get, and that’s all you can hope for.

    엔지니어링을 하면서 제일 중요하면서 어려운 점이 트레이드 오프를 고민하여 근거를 만들고 사람들을 설득하는 것이다. 주어진 상황과 문제 속에서 최적의 비용을 지불하도록 하는 것이 중요한 역량이다. 요즘에는 이 의식이 조금 희미해져서 '내가 구현하기 편한 방향'이나 '일단 빠르게 만들 수 있는 방향'을 선택하는 상황이 존재 했었다. 다시 한번 의식을 되새길 필요가 있어 보인다. 프로이기에.

    김동욱

  • This approach has the advantage that each consumer of the data can transform the raw data into the form that best suits their needs. It’s sometimes called the sushi principle: “raw data is better”

    데이터 아키텍쳐에서 원본 데이터를 보존하는 것이 얼마나 중요한지 다시 생각하게 되었다. 원본 데이터를 그대로 저장하는 것이 불필요한 낭비라고 생각할 수 있다. 특히 많은 회사들이 비용 절감을 시도하는 지금과 같은 시기는 더더욱 그렇다. 하지만 원본 데이터를 통해 데이터를 사용하는 팀 마다의 목적에 맞게 가공할 수 있는 점이 장점이다. 원본 데이터는 한번 분실되면 복구하기가 매우 어렵다는 점도 고려해야 한다. 요즘 같은 AI 메타에서는 더욱이 원본 데이터를 얼마나 효율적으로 저장할 수 있는지 고민을 많이 해야될 것 같다.

    김동욱

START TODAY

이 책을 읽고 있다면, 한 줄 남겨보세요

하루 한 줄이 쌓이면 내 서재와 연속 기록이 됩니다. 무료로 시작할 수 있어요.

무료로 시작하기