📕 book
-
🧑🏻💻 구글 엔지니어는 이렇게 일한다 (3) - 지식공유📕 book/🧑🏻💻 구글 엔지니어는 이렇게 일한다 2025. 9. 17. 00:30
🚀 3. 지식공유가장 중요한 사실은 조직에 배움의 문화가 자리 잡혀야 한다는 것이고 그러려면 사람들에게 모르는 걸 인정할 수 있도록 돕는 심리적 안전을 제공해야 합니다.📖 3.1 배움을 가로막는 장애물조직 전체에 전문성을 공유하기는 결코 쉬운 일이 아니라 배움의 문화가 견고하게 뒷받침하지 못하면 여러가지 문제에 부딪히게 됩니다. 1️⃣ 심리적 안전 부족불이익이 두려워서 스스로 위험을 감수하거나 실수를 드러내기 꺼리는 환경이 현상은 두려움이 팽배한 문화 혹은 꼭꼭 숨기려는 경향으로 나타나곤 함 2️⃣ 정보 섬조직의 각 부서가 서로 소통하거나 자원을 공유하지 않아서 지식이 파편화됩니다.이런 환경에서는 일하는 방식을 각각의 부서가 제각기 만들어나가서 여러 현상이 나타남정보 파편화정보 중복정보 왜곡 3️⃣ ..
-
🧑🏻💻 구글 엔지니어는 이렇게 일한다 (2) - 팀워크 이끌어내기📕 book/🧑🏻💻 구글 엔지니어는 이렇게 일한다 2025. 9. 2. 09:47
🚀 2. 팀워크 이끌어내기이 주제를 논하려면 여러분이 반드시 통제해야 하는 하나의 변수, 즉 ‘여러분 자신’ 을 조망하는 데서 시작해야 합니다.사람은 완벽하지 않습니다.그래서 인간을 ‘간헐적 버그들의 집합’에 가깝다고 이야기하곤 하죠.하지만 동료에 내재된 버그를 이해하려면 무엇보다 여러분 내면에 서식하는 버그를 먼저 이해해야 합니다. 이번 장의 핵심 주제는 소프트웨어 개발은 ‘팀의 단합된 노력’의 결실이라는 점입니다.그래서 엔지니어링팀이 (혹은 어떤 형태든 창의적 협업이) 성공하려면 겸손, 존중, 신뢰라는 핵심 원칙에 맞게 여러분 자신의 행동을 바로잡아야 합니다. 📖 2.1 내 코드를 숨기고 싶어요.사람들은 자신이 진행 중인 작업물을 다른 사람이 보고 판단하는걸 두려워합니다.이런 두려움은 인간의 본성..
-
🧑🏻💻 구글 엔지니어는 이렇게 일한다 (1) - 소프트웨어 엔지니어링📕 book/🧑🏻💻 구글 엔지니어는 이렇게 일한다 2025. 8. 31. 11:51
🚀 1. 소프트웨어 엔지니어링소프트웨어 엔지니어링은 흐르는 시간 위에서 순간순간의 프로그래밍을 모두 합산한 것이다.-구글- 소프트웨어 엔지니어링에서 프로그래밍이 큰 비중을 차지하는 건 틀림없지만 프로그래밍은 결국 새로운 소프트웨어를 제작하는 수단입니다.이 차이를 받아들인다면 자연스럽게 프로그래밍 작업(개발, development)과소프트웨어 엔지니어링 작업(개발 / development + 수정 / modification + 유지보수 / maintenance)의 차이도 궁금할 것입니다. 시간이라는 요소가 더해지면서 프로그래밍에는 중요한 차원이 하나 늘어서 더 입체적으로 바뀝니다.시간이 프로그램에 미치는 영향을 알아보려면 “이 코드의 예상 수명은?” 이라는 질문을 던져보면 좋습니다.짧게 생을 마감하는 코..
-
4장. 카프카 상세 개념 - 토픽과 파티션📕 book/아파치 카프카 2023. 1. 17. 13:52
4장. 카프카 상세 개념 - 토픽과 파티션 ⭐ 토픽과 파티션 토픽은 카프카의 시작과 끝이다. 토픽을 만들면서 카프카를 사용하기 시작한다. 토픽에 대해 잘 이해하고 설정을 잘하는 것이 카프카를 통한 데이터 활용도를 높이는 것이다!! 📌 적정 파티션 개수 토픽의 파티션 개수는 카프카 성능과 관련있다. 토픽 생성 시 파티션 개수 고려사항 데이터 처리량 메시지 키 사용 여부 브로커, 컨슈머 영향도 데이터 처리량 파티션은 카프카 병렬처리의 핵심이다. 파티션의 개수가 많아질 수록 매핑되는 컨슈머 개수가 증가하기 때문 따라서, 파티션 개수를 정할 때 토픽에 필요한 데이터 처리량을 측정해 정하는 것이 중요 파티션 개수만큼 컨슈머 스레드를 운영하면 토픽의 병렬처리를 극대화 할 수 있다. 👀 컨슈머 전체 데이터 처리량이 ..
-
11장 - CQRS📕 book/도메인 주도 개발 시작하기 2023. 1. 16. 11:05
📌 단일 모델의 장점 조회를 하는 과정에 여러 애그리거트의 데이터가 필요한 경우 조회 속도를 빠르게 하기 위해서 구현 방법을 고민해야 한다. 식별자를 이용해 애그리거트를 참조하는 방식 즉시 로딩방식과 같은 JPA의 쿼리 관련 최적화 기능을 사용할 수 없다. 애그리거트 간 연관을 직접 참조하는 방식 조회 화면의 특성에 따라 즉시 로딩, 지연 로딩으로 처리해야 한다. 이런 고민이 발생하는 이유 상태를 변경할 때와 조회할 때 단일 도메인 모델을 사용하기 때문 ORM 기법은 도메인 상태 변경 기능을 구현하는데 적합하다 하지만, 여러 애그리거트에서 데이터를 가져오는 기능을 구현하기에는 고려할 것이 많아 복잡하게 만든다. 복잡도를 낮추기 위해 상태 변경을 위한 모델과 조회를 위한 모델을 분리하는 것이 좋다. ⭐ C..
-
10장 - 이벤트📕 book/도메인 주도 개발 시작하기 2023. 1. 16. 09:44
📌 시스템 간 강결합 문제 외부에서 제공하는 서비스를 파라미터로 전달받고 도메인 기능에서 도메인 서비스를 실행할 경우 문제가 발생할 수 있다. 외부 서비스가 정상이 아닐 경우 트랜잭션 처리를 어떻게 해야 할지 애매하다는 것이다. 외부 기능을 실행하는 과정에서 익셉션이 발생할 경우 롤백 or 커밋 중에 무엇을 해야 할까 ❓ ex) 환불 서비스를 실행하는 경우 외부의 환불 서비스를 실행하는 과정에서 익셉션이 발생하면 환불에 실패했으므로 주문 취소 트랜잭션을 롤백하는 것이 맞을 것 같지만 반드시 트랜잭션을 롤백 해야 하는 것은 아니다. 주문은 취소 상태르 변경하고 환불만 나중에 다시 시도하는 방식으로 처리할 수도 있다. 2. 성능 문제 외부 시스템의 응답 시간이 길어지면 그 만큼 대기 시간도 길어진다. 즉, ..
-
9장 - 도메인 모델과 바운디드 컨텍스트📕 book/도메인 주도 개발 시작하기 2023. 1. 13. 22:09
📌 도메인 모델과 경계 한 도메인은 여러 하위 도메인으로 구분된다. 따라서, 한 개의 모델로 여러 하위 도메인을 모두 표현하려고 하면 오히려 모든 하위 도메인에 맞지 않는 모델을 만들게 된다. 하위 도메인마다 사용하는 용어가 다르기 때문에 올바른 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어야 한다. 모델은 특정한 컨텍스트(문맥) 하에서 완전한 의미를 갖는다. 컨텍스트마다 의미가 서로 다를 수 있다. 이렇게 구분되는 경계를 갖는 컨텍스트를 바운디드 컨텍스트(Bounded Context)라고 한다. 📌 바운디드 컨텍스트(Bounded Context) 바운디드 컨텍스트는 모델의 경계를 결정하고 한 개의 바운디드 컨텍스트는 논리적으로 한 개의 모델을 갖는다. 용어를 기준으로 구분 서로 다른 용어를 사..
-
8장 - 애그리거트 트랜잭션 관리📕 book/도메인 주도 개발 시작하기 2023. 1. 12. 22:32
📌 애그리거트와 트랜잭션 한 애그리거트를 두 사용자가 동시에 변경할 경우 애그리거트의 일관성이 깨질 수 있다. 일관성이 깨지는 문제가 발생하지 않도록 하려면 아래 두 가지 중 하나를 해야 한다. 사용자 1이 정보를 조회하고 상태를 변경하는 동안 사용자2가 애그리거트를 수정하지 못하게 막는다 사용자1이 정보를 조회한 후 사용자2가 정보를 변경하면, 사용자1이 애그리거트를 다시 조회한 뒤 수정하도록 한다. DBMS가 지원하는 트랜잭션과 함께 애그리거트를 위한 추가적인 트랜잭션 처리 기법이 필요하다!! 대표적인 트랜잭션 처리 방식에는 선점, 비선점 잠금의 두 가지 방식이 있다. 🙅🏻 선점 잠금 💡 선점 잠금(Pessimistic Lock) - 먼저 애그리거트를 구한 스레드가 애그리거트 사용이 끝날 때까지 다른..