본문 바로가기
반응형

역량 UP!73

8) nonos(No No Stress) - 배송준비(발주처리)기능 추가 와우..새벽4시가 되도록 개발을 하고 있다니..-0-ㅋㅋ 노노스 8번째 포스팅!조금씩 완성되고 있는 nonos!!!1) 신규주문주문 건 들 불러와서 배송준비로 등록!업체와 상품이 매핑이 안돼있으면 미매핑으로 간주!한번은 매핑을 시켜줘야한다.아래처럼 업체명을 수기로 등록을 하던지 혹은 골라서 매핑이 가능하다. 저장 후 등록을 하면 자동으로 배송준비탭으로 넘어가며 발주처리를 하기 위한 리스트들이 보인다.발주처리를 하기 위한 주문건들에 대해서 체크를 한 뒤에 발주처리 버튼을 누르면!아래처럼 발주처리 엑셀이 생성 된다.아래처럼 여러개면 zip으로 단일이면 하나로 나오게 된다.2026년 새해를 서울에서 보내고 있다.역시 서울이 좋긴 좋다ㅋㅋ 편하다 매우!만들어서 네이버에 팔면서 네이버로 이직해야겠다! ㅋㅋ 친구놈.. 2026. 1. 3.
7) nonos(No No Stress) - 판매관리로 통합! 기존에 따로 개발하려고 했던것을 그냥 판매관리 하나로 처리하는것으로 머릿속에서 정리를 하였다.일단 가상으로 법인명부터 지어보았다. ㅋㅋ대~충 끄적여보았다. 그리고 정리!UI는 아래와 같이~신규주문에서 주문처리를 하면 배송준비로 자동으로 가게끔 할 생각이다.물론 클릭도 쌉가능!건수는 하드코딩인데 일단은 빼버릴까 생각 중이다.그리고 사이에 > 요런걸 넣어볼까도 생각을..ㅋㅋ 작업이 이어진다는 느낌으로..!우선은 UI만 작업을 해둔 상태이고 백단 작업 및 이벤트 작업들이 남았다.차근차근 개발해서 네이버에 팔아야겠다. :) 2025. 12. 22.
synology to aws로 전환?? 출근을 했는데 친구가 접속이 안된다고 연락이 왔다..어라..정전이 됐나? (집이 산쪽에 있어서 정전이 종종 된다..ㅠ)혹은 뭔가 자동 업데이트로 docker가 재시동이 되었나? 그래서 컨테이너가 내려갔나??시놀리지가 내려가면..혹은 Docker registry가 재시동되면..웹 서비스뿐만 아니라 DB까지 내려가서...살짝 개발하고 싶을 때 로컬 셋팅을 해서 또 해야하는 문제가 발생! -_-;;클라우드 시대에 AWS를 써보면서 이것저것 만져보는것도 괜찮을것 같다는 생각을 하였다.그러나 개인적으로 하는 프로젝트이기 때문에 최대한 비용이 들지 않는 방향으로 하려고 한다.저번에..잘 몰라서 쌩돈 5만원이 날아간 후 AWS 계정을 삭제한 바 있다ㅋㅋ 일단은 easy-ns쪽은 그래도 시놀리지도 돌리고 nonos 오.. 2025. 12. 22.
6) nonos(No No Stress) - 주문 리스트 컬럼 리사이징 기능 추가 아래처럼 | 요 부분이 드래그로 줄였다 늘렸다 할 수 있도록 수정하기!프론트는 잘 몰라서 ai를 써서 하는데 적용이 안돼서 봤더니..npm run build를 시켜줘야했다!그리고 pro를 업그레이드 즉, 돈내고 쓰라고 가이드를 해서-_-^조심해야한다! ㅋㅋ 아니 저번에 잘 썼던 기능인데...왜 돈내라고 하냐고 ㅋㅋㅋ ai는 역시 믿을수 없는 녀석이다.상업적으로 설계가 되어있다면..그야말로 무서울꺼라는 생각을 했다..사기꾼도 이런 사기꾼이 없을꺼다..ㄷㄷ 요랬는데~요렇게 됐어요!주문처리 부분도 살짝 변경! 업체를 다양하게 소싱했다면..스토어에서 판매하는 상품들은 업체 데이터가 없기 때문에 업체를 임의로 만들어서 매핑을 시켜줘야한다.그래야 업체별로 관리를 할 수 있게 된다.easy naverstore에서는 .. 2025. 12. 8.
MVCC(Multi Version Concurrency Control)가 뭐지? MVCC란?MVCC는 동시성을 높이면서 락을 최소화하기 위해 나온 기술 입니다.즉, 여러 트랜잭션이 동시에 데이터를 읽고 쓰는데 서로 방해 없이 처리되도록 하려고 나온 개념 입니다.MVCC가 나온 이유왜 나왔나??? 데이터베이스에서 여러 트랜잭션이 동시에 같은 데이터를 조회/수정할 때 충돌이 발생 합니다.문제1) 쓰기 lock 때문에 읽기 작업이 막힘누군가가 update하면 row에 lock을 걸어서 다른사람은 select를 못합니다.읽기 처리량(read throughput)이 심각하게 떨어집니다.데이터베이스 병목이 발생 합니다.문제2) 동시성이 낮음업데이트가 많은 테이블은 항상 락 경합(lock contention)때문에 대기상태가 늘어납니다.그래서 해결책으로 MVCC가 나오게 됩니다.이 기술의 기본 .. 2025. 11. 28.
이벤트 소싱(Event Sourcing)이란? 상태 자체를 저장하지 말고, 상태가 만들어진 사건(Event)의 흐름을 저장하는 방식DB 테이블에 현재값(Current State) 만 저장하는 게 아니라,그 값이 만들어지기까지의 이벤트(명령의 결과)를 계속 쌓아두는 구조이벤트1: UserCreated(id=1)이벤트2: PointAdded(+100)이벤트3: PointAdded(+50)이벤트4: PointUsed(-30)이벤트5: PointAdded(+20)위의 이벤트들을 순서대로 재생(Replay)하면 현재상태(point=140)을 계산할 수 있음. Command → Event Store(이벤트 저장) → Read Model(Mongo/Elasticsearch) 업데이트 ↑ .. 2025. 11. 18.
CQRS(=Command Query Responsibility Segregation)를 알아보자! 명령(Write)과 조회(Read)의 책임을 분리한다.왜 써야하지?제 경험으로는 장애가 한번 발생 했었는데 알람이 엄청나게 왔었습니다.상황은 어디에선가 엄청나게 호출을 하고 있었고 로그를 보니 사내에서 제공하는 Spark와 Hadoop을 지원하는 곳에서 호출을 하고 있었습니다.즉, 읽기 트래픽이 폭증하면서 Akka와 HBase RegionServer의 리소스(CPU, IO, 네트워크, 쓰레드, GC)가 읽기 때문에 많이 사용하고 있었고 그 결과 쓰기 요청들이 타임아웃/에러로 이어진 상황 이였습니다.하필 뉴스 컬렉션이라서..민감한 부분이였습니다. ㅠㅠ 한가지 문제로 인해 쓰기가 문제가 된것은 아닐것 입니다.Akka 자원 경쟁HBase RegionServer 자원 경쟁Data size도 커서 네트워크 문제 .. 2025. 11. 14.
Backoff Retry와 DLQ(Dead Letter Queue) 차이? 사용법? Backoff Retry와 DLQ 둘 다 재시도를 할 수 있는 친구들 입니다.무슨 차이가 있고 언제 사용하면 좋은지 알아보고 사용하면 좋을것 같습니다.Backoff Retry는 처리 실패시 일정 시간 대기(Backoff) 후 재시도하는 메커니즘 입니다.예를 들면 네트워크 지연이나 일시적인 장애(DB lock, 외부 api timeout) 같은 복구 가능한 오류에 사용 됩니다.동작 흐름Consumer → 메시지 처리 실패 → 1초 대기 → 재시도 → 또 실패 → 3초 대기 → 재시도 → 또 실패 → 10초 대기 → 재시도 → 성공 or DLQ 이동포인트재시도 간격을 점점 늘려서 시스템 부하를 방지 합니다.사용 예시kafka Consumer / 외부 API 호출 실패 시 재시도DLQ는여러번 재시도 했음.. 2025. 11. 11.
동시성(Concurrency) 모델&스케줄링 모델(feat. ForkJoinPool) 2025.08.16 - [역량 UP!/Architecture] - C10K 문제(C10k Problem)란 무엇인가?Concurrency Models 5가지동시성 모델설명대표 기술Thread-based여러 스레드가 공유 메모리 사용Java Threads, ThreadPool, Spring MVCEvent-driven (이벤트 루프 기반)1개 또는 소수 스레드가 이벤트를 감지하고 처리Node.js, Redis, Netty, NginxMessage-passing / CSP공유 메모리 X, 채널로만 통신Go Goroutine + channelActor Model모든 게 Actor, 메시지로만 통신Akka, ErlangReactive StreamsNon-blocking + BackpressureWebFlux, .. 2025. 11. 4.
Blocking&non-Blocking 그리고 Sync&Async 이해하기! 개념을 쉽게 이해해보자!Blocking과 Non-BlockingCPU / 쓰레드 레벨의 개념Sync와 AsyncApplication(메소드 호출 흐름) 개념Blocking / Non-Blocking = 쓰레드와 CPU의 관계BlockingI/O 작업(Disk, Network)을 기다리는 동안 쓰레드가 멈춤CPU가 놀고 있음(idle 상태)CPU를 낭비! 일해야하는데 일하지 않고 놈!Non-BlockingI/O 요청 후 즉시 리턴, 나중에 완료되면 알려줌나중에 누가??하드웨어 I/O는 OS커널이 감지하고 알려줌어플리케이션 레벨은 EventLoop or ThreadPool이 Callback을 실행하며 알려 줌이것때문에 특징을 헷깔릴 수 있음주의!Non-Blocking + Async(Callbak) 조합!.. 2025. 11. 3.
대용량 데이터 처리 시 고려사항 대량 데이터 처리 시 고려사항은 단순히 빠르게 처리해야한다가 아니다. 아래의 5가지로 나눠볼수 있다.성능(Performance), 안정성(Stability), 정합성(Consistency), 확장성(Scalability), 데이터 품질(Data Quality)성능(Performance)대용량을 처리하는 프로세스는 아래 참고!2025.08.21 - [역량 UP!/Architecture] - 용어정리) OLTP, OLAP란?2016.09.28 - [OS/Linux&Unix] - BATCH, OLTP,OLAP,DW 정의Data의 특성에 맞게 처리를 해주면 됩니다.3가지 영역으로 보면Infra : Server를 늘려주거나(Scale-out), 네트워크(LB), CDN, Cache DB : 데이터 저장 구조라고 .. 2025. 10. 26.
Saga Pattern(outbox pattern) 좀 더 보기! 2025.10.24 - [역량 UP!/Architecture] - MSA에서 분산 트랜잭션 처리는?(Saga+outbox)위 내용을 토대로 아키텍처를 설계했는데Saga pattern중 오케스트레이션 말고 코레오그래피의 흐름을 따라가며 좀 더 보자!1) Outbox 테이블CREATE TABLE outbox ( id BIGINT PRIMARY KEY AUTO_INCREMENT, aggregate_type VARCHAR(40) NOT NULL, -- "ORDER","INVENTORY","PAYMENT" aggregate_id VARCHAR(64) NOT NULL, -- ex) orderId event_type VARCHAR(60) NOT NULL, -.. 2025. 10. 24.
MSA에서 분산 트랜잭션 처리는?(Saga+outbox) 내가 몰랐던 MSA의 특징?마이크로서비스를 하는 목적은? 개발하는 속도가 빠릅니다.조직으로 보면 하나의 서비스를 가지는 조직은 UI specialists, middleware specialists, DBAs이 모두 모여있는 조직 입니다.커뮤니케이션이 유연하고 빨라서 개발속도가 빠릅니다.즉, 기술적인 아키텍처만 변경하는게 중요한게 아니라조직의 구조나 조직의 의사결정방향, 조직의 개발문화 스타일이 변경되야 성공할 수 있습니다.그림 출처 : https://martinfowler.com/articles/microservices.htmlConway's law(콘웨이의 법칙)소프트웨어 아키텍처의 구조는 소프트웨어를 만드는 팀의 구조를 따라간다. 서비스의 세분화는?서비스화는 크게(모놀리스) 시작하며 분할(MSA) .. 2025. 10. 24.
18) ENS Project - 발주파일 변경 요청 요구사항지인이 업체별로 발주파일을 전달 하는데 반드시 양식에 맞춰서 보내야하는 업체가 있다고 함.귀찮으니 만들어달라고 요청이 들어옴!개발일정넉넉잡아 2시간! 카페로 출똥!개발애월언니 발주 시스템 추가범위 : 프론트/백엔드 수정!애월언니 계정 로그인 시에만 해당 메뉴가 보이도록 함!매핑체크// 업체받는분 받는분전화 받는분전화2(없으면 공란) 수화주주소 수량 보내는분 보내는분분전화 보내는분전화2(없으면 공란) 보낸분주소 물품명 배송메세지 물품크기// 네이버스토어결제일 옵션정보 수량 수취인명 구매자명 수취인연락처1 구매자연락처 통합배송지 최종 상품별 총 주문금액 배송메세지 상품주문번호 배송방법(구매자 요청) 상품종류 배송방법 택배사 송장번호 발.. 2025. 10. 10.
SOA 서비스 지향 아키텍처(Service Oriented Architecture) 마이크로 서비스의 근간이 되는 SOA아키텍처를 통해서 아키텍처의 발전과 실패원인을 분석하여 인사이트를 얻자!세부 구현기술은 변했지만 MSA등 분산 시스템의 아키텍처 사상은 그래도 반영 됨.SOA의 본질적인 개념을 파악하여 대용량 시스템 구현에 활용하자!1. SOA(Service Oriented Architecture)란? 서비스 단위로 기능을 쪼개서 재사용하자! 2000년대 초반 대기업·금융권에서 유행했던 아키텍처 입니다.Business Service주문, 결제, 배송 같은 업무 단위 서비스Task Centric Service특정 업무 단계에 집중한 서비스Entity Centric Service고객, 상품 같은 데이터 중심 서비스Intermediary Service (중간 서비스)아키텍처에 유연성을 더해.. 2025. 8. 26.
비동기 아키텍처(=Asynchronous Architecture) 비동기처리메세지 큐를 기반(MQ, RABBIT MQ, KAFKA, SQS etc)응답을 기다리지 않고 바로 리턴큐 뒤에 다수의 워커가 메세지를 읽어서 처리(워커수를 조정하여 대용량 처리가 용이)비동기 처리 메세지 패턴Fire&Forgetpattern : Producer가 메세지를 그냥 큐에 던져놓고 응답 안 기다림소비여부는 신경 안씀일반적인 MQ 모델에 가까움Producer -> Queue -> Consumerex) ActiveMQ, SQS, RabbitMQ의 기본 Queue Publish&Subscrbepattern : Producer가 메시지를 발행(Publish)하면, 여러 Consumer들이 각각 구독(Subscribe)해서 받아감같은 메세지를 여러 Consumer가 동시에 받을 수 있음.ex) .. 2025. 8. 21.
용어정리) OLTP, OLAP란? OLTP랑 OLAP은 데이터베이스를 쓰는 목적에 따라 나눈 개념OLTP (Online Transaction Processing) → 실시간 거래 처리용OLAP (Online Analytical Processing) → 분석용 OLTP (온라인 트랜잭션 처리)앱/서비스에서 사용자가 직접 쓰는 DB특징빠른 읽기/쓰기 성능이 중요함데이터는 정규화해서 중복 최소화 (INSERT/UPDATE 잦음)하나의 요청(주문, 결제, 로그인 등)을 빠르고 정확하게 처리해야 함예: 은행 송금, 쇼핑몰 주문, 로그인 처리 OLAP (온라인 분석 처리)경영진/분석가가 통계를 내는 DB특징대량의 데이터를 모아 복잡한 조회·집계를 수행데이터는 비정규화/스타 스키마로 저장 (JOIN 최소화, SELECT 위주)쓰기보단 읽기가 대부분,.. 2025. 8. 21.
5) nonos(No No Stress) - 발주처리 기능! 발주처리 기능 테스트https://youtu.be/Wo-7BgyFcfU?si=A5IZoG1cJykYgZ0U 발주 기능은 일단 요렇게! WILL-DO로는 READY상태에서 ORDERED상태로 변환할 때 실제 NaverStore API를 통해서 배송준비 상태로 주문상태를 변경해줘야 함.(신규주문 to 배송준비)그 이후 송장 업데이트를 한 뒤 배송 중으로 업데이트 해줘야 함.위 영상에서는 일단 엑셀처리를 한 내용이며 1) NaverStore API를 통해서 상태변경을 하는 작업2) Ordered 데이터들을 모아서 발주처리를 해야 함.3) 주문건수가 많을 경우 여러번에 거쳐서 상태변경을 해야 함.발주 대상을 모아주는 처리와 발주를 처리 하는 부분을 따로 개발?아니면 그냥 사라지게 만들고 마지막에 발주버튼을 클릭.. 2025. 8. 19.
왜 Cache가 필요한가? 실무에서 꼭 알아야 할 캐시 패턴 10가지! Cache는 왜 필요할까?DB는 느리고 비싼 자원 → 요청이 몰리면 쉽게 과부하캐시는 빠른 메모리 → 자주 쓰는 데이터를 미리 올려두고 바로 꺼내씀결과적으로서버 부하 줄이기응답 속도 빨라짐DB 장애 위험 감소부하땜에 DB서버 죽음..ㅋㅋ자주 사용하는건 캐시에 두고 DB는 꼭 필요할 때만 사용하자! Cache 기법 4대장(1) TTL (Time To Live)캐시에 넣을 때 시간 제한을 둠 → 일정 시간 지나면 자동 삭제장점: 실시간성이 덜 중요한 데이터에 적합하며 캐시가 무한정 커지지 않음단점: DB 데이터가 바뀌면(update) 캐시 데이터와 불일치가 발생할 수 있음그래서 DB가 업데이트 될 때 관련 캐시를 즉시 삭제!다음 요청이 들어오면 DB에서 불러오고 최신 데이터로 업데이트(Lazy Loadin.. 2025. 8. 18.
C10K 문제(C10k Problem)란 무엇인가? 1. C10K 문제의 배경1990년대까지만 해도 웹 서버가 수백 개의 동시 연결만 처리해도 충분했습니다. 하지만 인터넷 보급과 함께 수천~수만 명이 동시에 접속하는 상황이 생기면서 기존 방식으로는 서버가 감당하기 어려운 한계에 부딪히게 되었고, 이를 C10K 문제라고 부릅니다.여기서 "C10K"는 Concurrent 10,000 connections의 줄임말입니다.2. 기존 방식의 한계초기 서버는 연결마다 스레드나 프로세스를 생성하는 구조였습니다.연결이 늘어날수록 스레드 수가 기하급수적으로 증가컨텍스트 스위칭 비용 증가메모리 낭비와 동기화 오버헤드 발생또한 Blocking I/O를 사용했기 때문에, 한 연결이 I/O 대기 상태라면 해당 스레드는 CPU를 제대로 활용하지 못했습니다.3. 해결 방법Non-b.. 2025. 8. 16.
대용량 아키텍처 설계(feat. 조대협의 대용량 아키텍처 설계 로드맵) 너무 재밌을 것 같아서..질러버렸다! 내돈내산! 아주 오래전부터 알고 있었던 블로거 "조대협" 님 강좌!오프라인에서도 한번 들었었는데 ㅎㅎ 이제는 온라인이닷!내가 알고 있는 아키텍처 지식들을 좀 더 업데이트를 할 시기이다.사실 너무 오래되어서 잘 기억도 나질 않는것도 많다-_-;;일단 개인프로젝트(코틀린)는 홀딩! 내일은 광복절!(금) 토, 일 동안 강좌를 들어보자:) 학습목표대용량 아키텍처를 설계하기 위해 아키텍트로서 알아야 할 12가지 지식- 비즈니스, 운영, 시스템 설계 등 넓은 시야- 모놀로식, SOA, MSA 등 현대의 아키텍처가 발전해온 히스토리와 각 아키텍처의 특성을 알고, 자사의 비즈니스 목적과 상황에 따라 맞춤화된 아키텍처 설계 역량을 기릅니다. - 전체 시스템을 아우르는 아키텍트.. 2025. 8. 15.
반응형