-
심리적 안전과 지식공유, 강백호와 중경삼림DEV 2024. 1. 12. 22:36
지식은 형태는 없지만, 소프트 엔지니어링 조직의 가장 중요한 자산이기 때문에, 지식 공유야 말로 조직에 탄력을 불어넣어 변화에 직면했을 때 생존할 수 있도록 하는데 결정적인 역할. 어떻게 하면 조직원들이 개방적이고 정직한 지식 공유를 장려하는 문화를 만들 수 있을까? 지식은 무엇인가? 데이터는 사물이나 사건에 대한 묘사(description)이며, 가공되지 않은 상태의 사실(facts)이다. 그리고 특정한 목적을 위해 데이터가 처리되면(혹은 추상되면) 그 목적에 유용한 정보가 된다. 나아가 정보가 체계화되면 지식이 되며, 지식이 고도로 추상화되면 지혜가 된다. 知 - 알 지 知(지)라는 글자는 矢(화살 시)에 口(입 구)자를 합한 것 입(口)으로 말이나 의견이 화살(矢)처럼 정확하고 빠르게 전달되고 그것..
-
Dependency-Structure-Matrix & DDD & Layered-ArchitectureDEV 2024. 1. 8. 20:58
project 내부 Dependency를 파악해 높은 응집력, 낮은 결합도를 가진 코드를 유지하는 방법과 도구를 DDD 관점에서 알아보자. 일반적으로 코드를 이해하는 데 개발 시간의 60%를 사용 - https://ieeexplore.ieee.org/document/7997917 코드 규모가 커지면 복잡도도 올라가기 때문에 코드 시각화, 코드 출력, 스크래치 리팩터링 등의 도움을 받을 수 있다. 코드 시각화 Dependency structure matrix(DSM) 프로젝트 내 dependency 파악하는 방법 중 하나 열을 기준으로 dependency 파악 다이어그램에서 dependency는 화살표가 들어오는 것으로 파악 task1은 task3에 dependency(의존성)을 가진다. - task3이 ..
-
빈약한 도메인 모델, 풍부한 도메인 모델, DDD 그리고 캡슐화DEV 2023. 12. 31. 20:56
대부분의 비즈니스 시스템은 MVC 아키텍처를 사용하고, 빈약한 도메인 모델(anemic domain model)을 기반으로 작성되고 있다. 이 개발 방식(빈약한 도메인 모델을 기반으로 한 MVC)은 객체지향 프로그래밍 스타일에 위반될 뿐 아니라, 철저하게 절차적 프로그래밍 스타일에 해당하기 때문에 안티 패턴으로 간주되기도 한다. The anemic domain model is described as a programming anti-pattern where the domain objects contain little or no business logic like validations, calculations, rules, and so forth. The business logic is thus baked..
-
LLM기반 chatBot 설계, 구조 변화DEV 2023. 12. 29. 21:25
많은 곳에서 LLM을 활용한 챗봇 서비스가 만들어지고 있다. langchain 코드 예제를 통해 챗봇 개발의 설계, 구조의 흐름이 어떻게 변하고 있는지 조사해 보자. 1. LLM api만을 사용 단순히 LLM에게 하나의 prompt로 질의 약간 아재개그 같지만, 미국에선 먹히는 것 같다. from langchain.chat_models import ChatOpenAI from langchain.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser prompt = ChatPromptTemplate.from_template("Tell me a short joke about {topic}") mode..
-
게임이론, 나폴레옹 그리고 중용 23장BOOK 2023. 12. 24. 21:21
이전 글에서 언급했던 책들 중 재미있었던 내용을 정리해 보았습니다. (그들은 왜 최후의 승자가 되지 못했나) 어쩌다 보니 파트장이 되었는데.. 파트장은 뭘 해야 하는 건가 잘 모르겠다. 책을 읽어보자.. 구글 엔지니어는 이렇게 일한다 개발자로 살아남기 요즘 팀장의 오답노트 그들은 왜 최후의 승자가 되지 못했나 (개인적으론 이 책 재 developer-as-job.tistory.com 그들은 왜 최후의 승자가 되지 못했나 책 정보 역사에 굵직한 발자취를 남겼으나 여러 이유로 최후 승자가 되지 못한 사람들이 어떤 선택을 했어야 했는지 게임이론을 적용하여 분석하고, 그들이 했던 고민을 오늘날의 조직 생활에 적용해 역사를 읽는 재미 속에 게임이론을 배우고 전략적 사고법도 얻을 수 있는 책 게임이론 여러 경제주체..
-
무상태(stateless) 웹 계층에서 비정규화(de-normalization)까지DEV 2023. 12. 23. 20:30
무상태(stateless) 웹 계층 → 수평적 확장(scale out) → DB의 scale out(sharding) → 안정해시(consistent hash) → join, 비정규화(de-normalization) 무상태(stateless) 웹 계층 웹 계층에서는 상태를 갖지 않는 것이 좋다. 상태 정보를 보관하는 서버는 클라이언트 정보(상태)를 유지하여 요청들 사이에 공유되어야 한다. 이유는 수평적 확장(scale out)에 불리하기 때문 해결하기 위해서는 상태정보(사용자 세션 데이터 등..)를 웹 계층에서 제거 -> DB로 관리 무상태(stateless) 웹 계층이라 부름 사용자 A의 세션정보, 프로파일 이미지 같은 상태정보가 서버 1에 저장되면, 사용자 A를 인증하기 위해 HTTP요청이 반드시 서..