다중 데이터소스 트랜잭션 연결 요새는 MSA로 시스템을 구축하여 서버와 DB도 모두 각각 분리하여 마이크로하게 시스템 설계를 하는 추세이지만, 서비스에 따라 여러가지 이유로인해 여러개의 Database를 연결하고 하나의 트랜잭션으로 묶어야 할 상황이 생길 수 있습니다. 이번 포스팅에서는...
코드리뷰 우리팀정도면 코드리뷰를 잘 하고있다고 생각하지만, 작업량이 많아지고 코드리뷰 건수 자체가 많아지면서 점점 부담이되고 죄송하게도 좀 더 자세히 리뷰를 못하게되고 있는듯하여 코드리뷰를 더 잘 할 수있는 방법을 찾기위해서 레퍼런스를 찾아 정리해 보았습니다. 카카오스토리팀 레퍼런스 정리...
InnoDB Lock MySql InnoDB 엔진의 경우 다양한 Lock을 이용하여 ACID(원자성, 일관성, 고립성, 지속성) 및 동시성을 보장합니다. Lock을 쿼리마다 사용자가 명시적으로 걸어 줄 수도 있지만, 일반적으로 Transaction isolation level에 따라 Lock을 걸어주게 되는데, level에 따른 lock을...
애자일, 스크럼, 코드리뷰, CI/CD, Git-flow, 테스트코드, 기술공유, 스타일가이드, 사내 스터디… 너무나도 친숙한 이것들은 ‘개발 문화’를 만들기 위해 많은 회사들에서 시행하고있는 내용들입니다. 그렇다면 ‘개발 문화’란 무엇일까요. 앞서 나열한 다양한 방법 및 기술들은 ‘개발 문화’를 만들기위한 수단이지...
DB Replication 서비스를 운영하면서 DB의 부하를 줄이기 위한 방법으로 DB Replication을 통해 쿼리의 대부분을 차지하는 read 작업을 Slave DB를 사용하게끔 하여 부하를 분산 시킬수 있습니다. Read의 부하가 큰 서비스의 경우 Slave를 여러개 만들어 사용하는것도 가능합니다....
(부제 : 스프링 웹 프로그래밍을 하는 당신, 클라이언트의 요청을 어떻게 처리하는지 알고 있는가?) Tomcat 일반적으로 탐캣(Tomcat)은 ‘WAS(Web Application Server)’의 대표적인 미들웨어 서비스로 알려져있습니다. 하지만 탐캣은 일반적으로 아파치 탐캣(Apache Tomcat)이라 불리며 회사명이자 웹서버의 대표적인 미들웨어인 아파치(Apache)의...
(해당 포스팅은 자바 프로그래밍에는 익숙하지만, java8부터 지원하는 스트림에 대해서는 미숙한 독자분들을 대상으로 합니다. 만약 람다식에 대해서 미숙하신 상태라면 자바 람다식 포스팅을 선행하여 읽고 오시기를 추천드립니다. ) Stream 개요 java8 에서 람다식과 함께 추가된 Stream은 ‘데이터의...
(해당 포스팅은 자바 프로그래밍에는 익숙하지만, java8부터 지원하는 함수형 프로그래밍에 대해서는 미숙한 독자분들을 대상으로 합니다.) Lambda Expression java8 부터는 람다표현식(람다식)을 지원합니다. 아마도 java8 이전버전을 사용하시던 분이라면 람다식이 익숙하지 않으실 수 있는데 사실 람다식, 또는 람다함수는 java8에서...
Tomcat 과 쓰레드 WAS의 종류중 하나인 Tomcat은 기본적으로 접근하는 request들에 대해 Thread를 할당하여 작업을 수행하도록 해줍니다. 해당 작업을 위해서 Thread pool을 사용하여 쓰레드를 재사용 할 수 있게 해주고 max-thread, connection timeout 등의 설정을 사용자가 직접...
들어가기에 앞서 해당 포스트는 현재 저희팀에서 사용하고있는 Git flow를 소개하고자 합니다. 저희팀의 git flow는 GitHub flow, GitLab flow의 장점들을 합친 모델을 사용중입니다. (참고 1. GitHub flow, GitLab flow 요약) (참고 2. Git flow) Git branch...
Kafka Apache Kafka is a community distributed event streaming platform capable of handling trillions of events a day. Initially conceived as a messaging queue, Kafka is based on an abstraction of a distributed commit log....
개요 Message producer - Kafka - Vertica 위와 같은 아키텍쳐가 있다고 가정했을때, 딱 보면 데이터들이 Kafka를 통해 들어오게되고 이를 Vertica DB에 저장하려고 하는 목적임을 아실수 있으실것 같습니다. 일반적인 구성으로는 producer - kafka - consumer -...
들어가기에 앞서 스크럼을 적용하는데 있어서 어디서나, 어떤팀에서나 딱 알맞는 형태의 스크럼은 없습니다. 스크럼의 기본인 ‘점진적 개발’을 목표로 회고를 하며 우리팀의 상황에 맞게끔 스크럼을 점점 변형시켜 나가면서 case by team 으로 맞추어 나가야 합니다. 이 포스팅은...
용어정리 스크럼 : 점진적 개발 방법론 스프린트 : 반복적 개발 단위로, 스크럼을 완성하기 위한 주기적인(1-4주 정도의 기간) 수행의 단위 백로그 : 대략적인 할 일 목록 (요구사항 정의서, user story) user story : Actor + UseCase...
CORS Cross Origin Resource Sharing(CORS)는 이름에서 알 수 있듯이 Origin (출처)를 교차하여 자원을 공유한다는 뜻으로, 도메인혹은 포트가 다른 서비스의 자원을 요청하는 내용을 담고 있습니다. 일반적으로 자바스크립트에서는 Same origin policy (동일 출처 정책) 보안 정책을 가지고있어,...