샤딩(Sharding)과 클러스터링(Clustering)은 모두 대규모 데이터와 높은 트래픽을 처리하기 위해 사용되는 데이터 분산 기술입니다.하지만 목적과 구현 방식에서 차이가 있습니다.샤딩(Sharding)정의데이터를 수평적으로 분할하여 여러 데이터베이스 노드에 분산 저장하는 방식각각의 분할된 데이터는 샤드(Shard)라고 불리며, 각 샤드는 독립적으로 작동합니다.특징데이터 분산:전체 데이터셋을 여러 샤드로 나누어 저장샤드 간에는 중복 데이터가 거의 없고, 각 샤드가 고유 데이터만 저장샤드 키(Shard Key):데이터를 분산할 기준이 되는 필드예: 사용자 ID, 주문 ID, 날짜 등수평 확장:샤드를 추가하면 데이터 저장 용량과 처리 능력이 확장장단점대규모 데이터 처리를 효율적으로 분산쓰기 및 읽기 성..
ETC
반응형
이전 글에 Jekins Pipeline을 생성해 도커 컨테이너 자동화 배포를 구축했다. 이번엔 파이프라인 각 스텝마다 Slack 알림을 받을 수 있도록 설정하려고 한다. 모두 알다시피 슬랙 알림 연동은 API가 매우 잘되어있어 설정하기가 너무 쉽다. 1. Slack에 Jenkins App 추가 https://워크스페이스.slack.com/apps로 접속해 Jenkins를 검색하고 Jenkins CI App을 슬랙에 추가해준다. 알림 받을 채널을 선택한다. 채널을 선택해 Jenkins CI 통합 앱 추가를 클릭하면 설명 지침 페이지로 이동하게 되는데, 여기서 나오는 설명은 모든 스텝이 끝난 후에 알림이 오는 설정이다. 모든 스텝이 끝난 후 알림이 오는 것을 원하면 이대로 따라 하기만 하면 된다. 예제는 파..
이전 글에서는 Jenkins을 이용해 jar파일 자동화 배포를 해보았다. 이번에는 소스코드를 도커 이미지 화 후 서버에서 해당 이미지를 받아 구동시키는 파이프라인을 구축하려고 한다. Blue Ocean 플러그인을 사용해 빌드가 되는 상태를 시각화하고 파이프라인을 쉽게 만들어보겠다. 이전 글과 마찬가지로 Jenkins 서버는 Docker로 로컬에서 구동했고, Jenkins 서버 구축 방법은 이전 글을 참고 바란다. 배포할 서버는 Naver Cloud Platform Server를 사용했고, 컨테이너 저장소는 Naver Container Registry를 사용했으므로 AWS EC2나 ECR을 사용하는 경우 설정법이 조금 다를 수 있다. 대략 진행되는 단계를 그림으로 나타내면 아래와 같다. 구축 예제 1. J..
보통 Blue/Green 자동화 배포 파이프라인을 구축할 때 Jenkins를 많이 이용한다. Aws에서 제공하는 Code Pipeline을 사용해 구축할 수 도 있지만 배포할 때마다 비용이 발생하므로, 자주 배포가 일어난다면 서버 비용만 나오는 Jenkins를 사용하는 것이 이득일 수 있다. 아래 예제는 Bitbucket Repository 안에 있는 소스를 배포해야 하므로 Bitbucket과 연동하는 법으로 정리하였고 젠킨스 서버는 Local에서 Docker 컨테이너를 띄어 진행했다. 간단히 그림으로 표현하자만 아래와 같다. 1. 젠킨스 이미지 다운로드 및 실행 아래 명령어로 젠킨스 도커 이미지를 다운로드해 컨테이너를 실행한다. docker run -itd --name jenkins -p 8090:80..
Querydsl를 사용하던 중 Expressions.stringTemplate을 이용해 MySQL에 DATE_FORAMT을 사용했는데, 실제 API는 잘 작동하지만 Test 코드에서는 DATE_FORMAT 함수가 없다고 오류가 발생했다. 실제 API 데이터베이스는 MySQL을 사용하고 테스트는 H2 Database를 사용했다. ... Expressions.stringTemplate( "date_format({0}, '%m')", user.createdDateTime ), ... 검색해보니 H2에는 DATE_FORMAT 함수가 없고 FORMATDATETIME을 사용해야 하는데 요것을 사용하면 실제 API에서 오류가 발생하고... 그래서 H2 Database에 사용자 정의 alias를 등록해 사용하기로 하였..
개발중에 진행되어야 하는 부분을 TODO기능을 사용해 나중에 확인할때가 있다. 하지만 모든 확인사항을 TODO로 사용하기엔 의미상 맞지도 않을 뿐더러 같은 TODO라도 다른 의미라면 구분하기 어렵다. 현재 로그인시 회원 데이터 동기화(레거시 -> 새로 개발한 서비스)하는 코드를 짜고있는데 나중에 동기화가 다 되었을때 동기화 하는 부분에 코드를 모두 지우든 주석처리하든 하려고 한다. 그래서 TODO 기능을 사용해 나중에 동기화가 완료된 후 제거해야할 코드를 구분하려고 한다. 인텔리제이 기준이다. 나는 LEGARCY라는 패턴을 사용해서 사용할 것 이다. 글자 배경, 색도 모두 변경할 수 있다. 요런식으로 사용해서 TODO를 확인하면 한눈에 구분하기 편하다
금융보안원, Apache Log4j2 취약점 긴급 점검 회의 개최 금융보안원(원장 김철웅)은 12월 12일(일) 김철웅 원장이 주재하는 금융권 Apache Log4j2 취약점 긴급 점검 회의를 개최해 금융권에 미치는 영향 등을 분석하고 금융보안원의 대응 상황을 점검했 www.boannews.com 홈페이지 기록 남기는 '로그4j2'서 취약점 발견…과기정통부 "긴급 보안패치 권고" 사진=픽사베이 많은 기업들이 홈페이지를 운영하며 사용하는 아파치(Apache) 로그(Log)4j 2 서비스와 관련된 보안 취약점이 발견된 가운데 정부가 긴급 보 www.bloter.net 애플·아마존도 사용하는 애드온 Log4j, 중대한 보안 결함 사태 발생 - CCTV뉴스 전 세계 주요 인터넷 서비스에서 널리 사용되는 Log4..
git 생성 $ git init 코드 클론 $ git clone 브랜치 생성 $ git branch 로컬 브랜치 삭제 $ git branch -d 원격 브랜치 삭제 $ git push — delete 로컬 브랜치 목록 $ git branch -a 원격 브랜치 목록 $ git branch -r 로컬 브랜치 선택 $ git checkout 원격 브랜치 선택 $ git checkout -t / 브랜치명 변경 $ git branch -m 수정한 파일 스테이지에 적용 $ git add # 해당 파일만 스테이지에 적용 $ git add . # 모든 변경사항 스테이지에 적용 코드 커밋 $ git commit -m “” 코드 새로고침 $ git fetch 원격 저장소 확인 $ git remote -v 원격 저장소 연결..
애자일 방법론이란? Agile은 기민한, 날렵한이란 뜻으로 좋은 것을 빠르게 취하고, 낭비 없게 만드는 다양한 방법론을 통칭해 일컫는 말이다. 앞을 예측하며 개발하지 않고, 일정한 주기를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발해 프로세스 모델 방식이다. 미리 정해진 몇 개의 단계에 따라 엄격한 순서대로 이루어지는 일직선의 과정인 폭포수의 프로세스와는 비교가 많이되는 반대의 개념이다. 애자일 방법론의 진행 과정 애자일 방법론은 계획 → 설계(디자인) → 개발(발전) → 테스트 → 검토(피드백) 순으로 반복적으로 진행된다. 계획을 세운 후 다음 단계까지 기다려서 절차대로 진행하는 폭포수 모델과 달리 먼저 진행 후 분석, 시험, 피드백을 통하여 개선하여..
"문화가 일을 한다" 공정과 도구보다 개인과 상호작용을 포괄적인 문서보다 작동하는 소프트웨어를 계약 협상보다 고객과의 협력을 계획을 따르기보다 변화에 대응하기를 카카오 문화 자기주도성 - 권한과 책임 주도적이고 빠른 의사결정을 위해 필요한 권한을 적임자에게 위임 공개 / 공유 - Shared Context 결론 뿐만 아니라 의견 개진과 토론의 내용까지도 모두 공유 수평커뮤니케이션 - 최선의 의사결정 해당 엄무의 적임자라면 누구나 의사결정 과정에 참여 문화의 바탕 신뢰 내 동료가 하는 이야기는 사용자에게 더 좋은, 그리고 카카오에 더 좋은 얘기일 것이라는 믿음 충돌 불편함을 감수하고 솔직하게 의견을 나누는 행동을 의미하며, 이성적이고 객관적 근거를 갖춘 대립의 과정 헌신 결정된 사항은 '우리의 결정'으로 ..