IT
-
Google Gemini CLI 설치 방법IT 2025. 11. 1. 21:23
1단계: 사전 준비 (Homebrew 설치)가장 쉽고 편리한 설치를 위해 Homebrew라는 패키지 관리자를 사용할 거예요. 맥북 사용자 대부분이 사용하는 필수 도구입니다.터미널 열기Command + Space를 눌러 Spotlight를 열고 '터미널'을 검색한 뒤 실행하세요.Homebrew 설치 확인Bash터미널에 아래 명령어를 입력하고 Enter를 누르세요.brew --version만약 버전 정보(예: Homebrew 4.x.x)가 나오면 이미 설치된 것이므로 2단계로 바로 넘어가세요.command not found와 같은 오류가 발생하면 Homebrew가 설치되지 않은 것입니다.Homebrew 설치 (필요시)아래 명령어를 터미널에 복사하여 붙여넣고 Enter를 누르세요. 설치 과정에서 비밀번호를 요..
-
모놀리식 애플리케이션의 분해(분리) 전략 - MicroserviceIT 2024. 3. 27. 22:24
많은 서비스들이 성장하면서 모놀리식 애플리케이션(Monolithic Application) 이 된다. 비즈니스 피처를 붙이고 붙이다 보면 거대한 하나의 덩어리가 되고 기술 부채가 눈덩이처럼 쌓여서 팀의 퍼포먼스를 떨어뜨리는 요인으로 작용하는게 일반적이다. 이때 팀에서는 마이크로 서비스로 분리할 대상을 찾은 뒤에 어떤 전략을 실행해야하는지 선택해야 한다. 가장 일반적으로 선택할 수 있는 전략 두가지를 이야기하고자 한다. 모놀리식 애플리케이션의 분해 전략 컴포넌트 기반 분해(Component-bated Decomposition) 컴포넌트 기반 분해는 (애플리케이션의 논리적 구성 요소인) 컴포넌트를 정제/추출한 후 분산 아키텍처를 점진적으로, 제어 가능한 방향으로 구성하면서 다양한 리팩터링 패턴을 적용하는 방..
-
JPA Entity를 Http Response Dto로 절대 사용하지 말아야 하는 이유IT 2023. 7. 17. 17:04
몇몇 개인 블로그에서 JPA Entity를 Http Response로 리턴하는 사례를 보고 이런 Anti-Pattern은 꼭 알려야 겠다는 생각이 들었습니다. 그 잘못된 정보의 포스팅을 보고 개발 업무에 적용하는 사례가 생기면 안되니 꼭 제대로 정정했으면 하는 바램입니다. 왜 Http Response Dto로 Entity를 사용하면 안되는 이유를 알아보시죠. Entity 객체를 Json으로 Serialize할때 Query의 실행으로 시스템 부하가 올라갑니다. Entity Entity 간 양방향으로 Relationship이 걸린경우 무한루프가 발생하면서 시스템이 Down 상태가 됩니다. Entity를 Serialize하기 위해서 추가하는 코드가 아키텍처링 혼선을 만듭니다. Client에 전달해서는 안되는 ..
-
실시간 데이터 집계 시스템 아키텍처IT 2023. 7. 17. 13:15
우리가 사용하는 많은 서비스를 통해 실시간으로 데이터가 집계되는 기능을 매일매일 접하고 있다. 유투브의 라이브 방송에서 시청자 수를 확인한다거나, 게시판 글의 개수처럼 Count를 본다거나 해야할 때다. 그런데 현업에서 오래 일하다 보니 PO/PM Side에서는 '실시간 데이터 집계'라는 기능 자체를 굉장히 쉽게 생각하는 경우가 많아서 구현 난이도에서 발생한 Gap으로 인해 갈등이 일어나거나 PO, PM과 개발자 모두 '실시간 데이터 집계'라는 요구사항에 매몰되서 Over Engineering하는 경우가 많았다. '실시간'이라는 요구사항이 가지는 무게는 생각보다 무겁고, 난이도는 어렵다. 무엇이 중요하고 무엇이 중요하지 않은지 판별할 수 있는 것이 Expert의 역할이고 역량이라고 생각한다. 왜냐하면 실..
-
데이터는 쌓는 것보다 분석 대상을 먼저 정해야 한다.IT 2023. 6. 21. 22:13
전문가들은 데이터는 분석 대상과 목적을 먼저 정하고 데이터를 쌓아야 한다고 합니다. 그런데 현업에서 일하다보면 많은 분들이 데이터를 일단 쌓고 분석 대상을 나중에 생각하는 모습을 자주 목격할 수 있었습니다. 그래서 오늘은 '왜 데이터는 쌓는 것보다 분석 대상을 먼저 정해야 하는지'를 이야기하고자 합니다. 1. 데이터는 많이 쌓는 것보다 필요한 것만 쌓아야 한다. 과거에 PM(Product Manager) 팀 리더가 데이터 적재에 대한 업무를 요청했었습니다. 내용인즉, 모든 화면에 있는 요소(버튼, 텍스트, 페이지)에 대해서 모든 이벤트(클릭, 성공/실패, 이동, 마우스 오버 등)를 로그로 쌓아달라는 것이었습니다. 그래서 우선순위는 차치하더라도 업무의 목적과 효과에 대한 질의응답하는 과정에서 '모든 요소에..
-
평균(Average)의 함정 - 편차IT 2023. 6. 2. 00:16
우리는 아주 어렸을 적부터 '평균'이라는 데이터 산출법으로 대화하고 성적에 대한 기준으로 사용합니다. 하지만 성인이되고 직장생활을 하면서 여러 지표를 다룰때도 마찬가지로 평균을 사용합니다. 아마도 20세이상 모든 인류가 피타고라스 정리는 몰라도 평균은 알거라고 생각합니다. ㅎ 오늘 이야기하고 싶은 주제는 '평균으로 인해 빠지기 쉬운 함정'입니다. 학교 성적으로 평균을 사용하는 것은 아무 문제가 없었는데 지표로 평균을 사용할때는 주의해야 한다니... 어떤 이야기인지 알아보시죠. :) 평균이란, '모든 항목의 합을 항목의 개수로 나눈 값입니다.' 즉, 중간값을 구하는 것입니다. 바로 중간값이라는 특성때문에 함정이 빠지는 것이고 자기가 함정에 빠졌는지도 모르고 지나가는 것입니다. 평균이 왜 위험한 것일까요? ..
-
Spring WebFlux 사용시 InvalidDefinitionException 처리 방법IT 2020. 12. 5. 20:04
start.spring.io에서 WebFlux를 다운로드 받아서 기본적인 세팅을 하고 실행하는데 아래 에러가 나온다. 그래서 검색해보니 web과 webflux 모듈이 충돌이 나는듯 하다. 그래서 해결책은 web 제거! 끝. 에러: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `reactor.core.publisher.Mono` (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain add..