전체 글
-
MongoDB란?프로젝트/mongoDB 2024. 1. 6. 00:01
MongoDB란? MongoDB는 NoSQL의 한 종류로 document database입니다. 애플리케이션 개발과 scaling이 용이하도록 설계된 오픈소스 데이터베이스입니다. 거대한 데이터베이스라는 의미의 Humongous(거대한) Database를 줄인 MongoDB로 이름 지어졌습니다. NoSQL이란? 흔히 SQL 언어를 활용하는 관계형 데이터베이스가 아니다는 NoSQL이라는 용어로부터 시작하여 현재는 Not Only SQL의 의미로 SQL 이외에 여러 가지 기능을 제공한다는 의미로 일반화되었습니다. key-value, document, graph 등 다양한 형태의 데이터베이스들이 존재합니다. 여기에서 mongoDB는 document database에 속합니다. Document Database란?..
-
Mono, Flux 이해하기Spring Framework/WebFlux 2024. 1. 5. 00:01
개요 Mono save(S entity); Flux saveAll(Iterable entities); fun saveAll(entities: Iterable): Flow ReactiveCrudRepository, CoroutineCrudRepository를 보다 보면 반환객체에 Mono, Flux, Flow등이 등장합니다. 처음 보는 개념인 Mono, Flux에 대해 알아보는 시간을 가지려고 합니다. Flow는 다음시간에.. Mono와 Flux는 무엇인가? public abstract class Mono implements CorePublisher{...} public abstract class Flux implements CorePublisher{...} public interface CorePubli..
-
콘웨이의 법칙이란?카테고리 없음 2024. 1. 4. 00:01
개요 주변에서 콘웨이의 법칙에 대해 이야기를 해주신 적이 있었습니다. 이번 기회에 콘웨이의 법칙에 대해 알아보면서 정리해보고자 합니다. 콘웨이의 법칙은 누가 만들었는가? 1968년 멜빈 콘웨이가 모듈 프로그래밍이라는 국제 심포지엄에서 하나의 논문을 발표하였습니다. 논문의 이름은 "How do Committess Invent" 로 해석하자면 "위원회는 어떻게 발명을 하는가?" 입니다. 콘웨이의 법칙이란? 조직의 커뮤니케이션 구조가 소프트웨어의 설계와 닮게 된다고 제안한 법칙입니다. 콘웨이는 코볼과 알골 컴파일러는 만드는 프로젝트를 수행했으며 프로젝트의 난이도와 업무량을 고려하여 코볼 컴파일러 작업에는 5명, 알골 컴파일러 작업에는 3명을 투입하였습니다. 이때 코볼 컴파일러는 5단계로 알골 컴파일러는 3단계..
-
JPA로 JSON Column CRUD 해보기JPA 2024. 1. 3. 00:01
개요 JPA를 활용하여 JSON Column을 만들어보고 CRUD 튜토리얼을 수행해보고자 합니다. 실제 코드는 github을 참고해 주세요 RDB에서 JSON을 사용하는 이유는? 일부 비정형데이터가 예상하지 못하게 생긴 경우에는 NoSQL의 기술스택을 추가하여 사용하기보다는 RDB에 JSON 타입을 사용해 볼 수 있습니다. JSON을 사용했을 때 단점은? 데이터를 조회 후 핸들링하기가 기존보다 복잡해진다. JSON 타입 vs TEXT 타입 일반적으로 대용량 칼럼, 소용량 칼럼으로 비교해 보았을 때 JSON보다 TEXT 타입이 성능적으로 더 좋은 모습을 보여줍니다. 하지만 일부분을 변경하고자 해도 TEXT는 통째로 UPDATE 해야 하지만 JSON 타입은 특정 필드만 UPDATE 할 수 있고, 인덱스를 활..
-
Window 10 Pro Docker 설치하기MSA & 쿠버네티스(Kubernetes) - k8s 2024. 1. 2. 00:01
개요 이전에 Window 10 Home Edition에서 Docker를 설치하는 방법에 이어 Window 10 Pro에 Docker를 설치하는 방법을 공유해보고자 합니다. https://junuuu.tistory.com/349 Docker 설치해보기 + Docker에 Jenkins 설치(윈도우10 Home Edition) 도커란? 도커에 대해 잘 모르신다면 다음 글을 보고 오시면 좋습니다. https://junuuu.tistory.com/331?category=994008 도커란? +(도커 이미지란?) 도커란? 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 컨 junuuu.tistory.com WSL 설치 WSL에 대해 간단하게 소개하면 window에서 linux 운영체제를 사용할 수 있도록 지원해 주는..
-
코딩 중 겪는 혼란에 대한 이해, 신속한 코드 분석클린 코드(Clean Code)/프로그래머의 뇌 2024. 1. 1. 01:01
세 가지 언어로 N을 이진수로 변환해 보기 세 가지 언어에서 모두 혼란스러운 부분이 존재하였습니다. APL 2 2 2 2 2 T n T에 대한 지식이 부족하기 때문에 혼란스럽다! T는 어떤 수의 값을 다른 진법의 수로 변환해 주는 이항 부호화함수이다! Java Integer.toBinaryString(n); 내부동작을 잘 모르기 때문에 혼란스럽다! 베이식 LET N2 = ABS(INT(N)) LET B$ = "" FOR N1 = N2 TO 0 STEP 0 LET N2 = INT(N1/2) LET B$ = STR$(N1 - N2 * 2) + B$ LET N1 = N2 NEXT N1 PRINT B$ 모든 단계를 이해하는 처리 능력이 부족하기 때문에 혼란스럽다! 변수들이 중간에 어떤 값을 갖는지 종이에 적으면..
-
대규모 트랜잭션을 처리하는 배민 주문시스템 규모에 따른 진화세미나, 영상 요약정리 2023. 12. 31. 00:01
https://www.youtube.com/watch?v=WCwPSVu8mH8 푸드주문서버개발팀의 강홍구님의 발표를 요약해보고자 합니다. 공유하고 싶은 주제 개발자가 급속도로 성장하는 서비스의 주문 시스템을 만들면서 고민한 과정들! 장바구니, 주문하기 시스템을 개발하며 12시, 18시30분 정도에 트래픽이 높은 특성을 가지고 있습니다. 특징1 - MSA 가게, 메뉴, 주문 ,결제, 배달 등 수많은 시스템이 통신하고 있습니다. 다른 시스템에 문제가 생겨도 주문이 가능한 방법을 고민합니다. 특징2 - 대용량 데이터 & 대규모 트랜잭션 일 평균 300만 건의 주문을 저장하면서 데이터 정합성 조회 성능을 고려해야 합니다. 특징3 - 여러 시스템과 연계 이벤트 기반으로 통신! 이벤트 유실이 발생하지 않아야 한다!..
-
Spring Cloud Gateway란?Spring Framework/Spring Cloud Gateway 2023. 12. 30. 00:01
개요 기존에는 AWS의 API Gateway를 주로 사용했었는데 Spring Cloud Gateway에 대해 알게 되어 정리해보고자 합니다. API GATEWAY란? 클라이언트와 백엔드 서비스 사이에 위치하는 proxy 역할을 수행합니다. 모든 클라이언트 요청에 대한 end point를 통합하는 역할을 수행하고, 인증 및 권한, 모니터링, logging 등 추가적인 기능도 수행합니다. Spring Cloud Gateway란? Spring Boot 2.x, Spring WebFlux, Project Reacter 기반으로 이루어져 있으며 Netty기반으로 구성되어 있습니다. Spring Cloud Gateway의 주 목적은 간단하면서 확실한 방법으로 요청을 다른 API로 라우팅 하고, 보안, 메트릭/모니터..