본문 바로가기
반응형

역량 UP!81

1) aw_project_불편하다 불편해! ㅋㅋ 매번 이렇게 체크를 해야한다. a.i 시대에 이런 불편함을 감수하다니!!바로 개발에 착수했다.사실 모바일쪽은 개발을 해본적이 없다.그러나 지금은 a.i시대!!흐름이 변화하고 있다. a.i를 적대하지말고 공존하는 방향으로 스며들어야한다.클로드코드로 앱을 만들어보자!인증 : 카카오 로그인언어 : TypeScriptFrontend : React NativeBackend : Supabase : https://supabase.com/앱 설명프로젝트 개발 기록팀 관리팀원들의 실력은 회장/부회장만 보임!경기 일정회장/부회장이 보는 화면!게스트 현황! 다음경기!자동 팀 편성경기상세에서 팀 편성이 가능하다!게스트 시스템회장/부회장이 게스트 구함을 해놔야 게스트 시스템에서 보임초대코드에 guest를 넣습니다.지역별 게스트.. 2026. 2. 3.
16) nonos(No No Stress) Open :) 고통받는 친구를 위해 nonos OPEN! + 지난 주말에 만나서 설명해줌!개발한 걸 잘써주면 개발자로써 뿌듯하다! 네이버 취소건 처리 네이버 취소건 체크를 위해 매번 체크를 자주 하면 네이버에서 오류를 내밷는다. 그래서 30분정도 캐시를 둬서 처리 및 나는 바로 체크해야겠다! -> 네이버 API에서 즉시 확인 버튼! 옛날 갬성 new 버튼 달기 송장 엑셀 업로드 처리송장은 정말 ㅋㅋ 업체와 밀접한 관련이 있어서 손봐야할것들이 많았다.또한 자동매핑을 주문번호를 주지 않기 때문에 수취인명+수취인전화번호 등으로 매핑을 하면 동일인이 여러주문의 경우 + 이미 처리된 송장처리! 그러면 다른 주문을 매핑시켜버린다.그래서 업체를 추가해줬다. 그리고 Validation을 해줬다. 노티를 해서 인지할 수 있도록!이제 .. 2026. 1. 27.
15) nonos(No No Stress) 송장 업로드 문제 + 네이버스토어 취소건 처리 송장 업로드 시 합배송 반대의 경우가 발생!현재 프로세스: 1. 송장 엑셀 업로드 (송장번호, 수취인명, 전화번호) 2. 수취인+전화번호로 주문 매칭 - 1:1 매칭 → 자동 처리 - 1:N 매칭 (같은 수취인이 여러 주문) → 수동 선택 UI 문제 상황 예시: 주문은 하나인데 업체에서 택배사에 나눠서 보냄(즉, 합배송 반대 개념= 송장이 2개 나옴, 그걸 전달 해준 경우) 송장 엑셀: - 송장A (696005020545) - 태하팍 010-1234-5678 (=당근주문).. 2026. 1. 23.
14) nonos(No No Stress) - AWS+개인 NAS를 이용해서 저렴하게 서빙하기! 2022.01.20 - [CM/aws] - aws 서버구축예전에 스터디를 하면서 aws서버를 구축해봤었는데 관련해서 구축을 아래와 같이 하였다.조금 달라진점이 있긴하다 ㅎㅎ 그리고 최대한 개인 프로젝트이기 때문에 DB만 셋팅해서 사용하고 어플리케이션은 기존 easy-ns쪽을 내리고 (도메인 1개 free) nonos를 붙였다. 어플리케이션은 개인 NAS / DB : 개인 NAS to AWS EC2 DB(Maria DB)인스턴스EC2 서비스를 검색 > 인스턴스t2와 t3가 있는데 t3가 최신세대 입니다.가격도 아래와 같이 t2.micro는 리눅스 기본요금 : 0.0144USD 시간당 t3.mirco는 리눅스 기본요금: 0.013USD 시간당 t3로 가잣!.. 2026. 1. 21.
13) nonos(No No Stress) - 송장 업로드 수정(feat. 트랜젝션처리)&엑셀 업로드 비밀번호 처리 조금 더 효율적으로 편리하게! 네이버스토어에서 주문건을 다운로드를 하면 비밀번호가 걸려있어서다운로드 후 -> 새창으로 새로운 엑셀을 만들어서 처리를 하는 불편함이 있다.조금의 불편함도 스트레스도 NO! NO! 목표 : 그냥 다운로드 받아서 바로 nonos 엑셀 업로드에 넣어서 사용자의 불편함과 시간을 절약할 수 있도록 한다.Just Download&Upload :) index-BjaQE6PT.js:582 Uncaught ReferenceError: Buffer is not defined ⏺ Buffer is not defined 에러!xlsx-populate가 Node.js의 Buffer를 사용하는데 브라우저에는 없어서 발생-> Buffer polyfill을 추가하겠습니다.추가했는데 오류나서 다른 플러그.. 2026. 1. 18.
11) nonos(No No Stress) - 송장처리(송장 업로드!)&배송중 탭 오늘은 송장처리와 배송중 탭에서 송장처리가 끝나면 배송중 탭에 리스트로 보이게하는 기능을 만들고자 한다.송장처리1) 송장 업로드 버튼을 누르면 아래와 같이 5가지 프로세스를 거쳐서 처리가 된다. 우선 택배사에서 준 엑셀파일을 선택해서 업로드 한다.2) 컬럼 매핑택배사 마다 컬럼이 다를수 있어서 매핑하는 작업이 필요하다.필수적으로 필요한 컬럼이 송장번호와 수취인명, 수취인전화번호이다.상품주문번호가 있으면 송장번호와 주문번호만 필요한데..택배사에서 주지 않는다ㅋㅋ3) 매칭 결과는 동일 수취인과 수취인전화번호가 있을수 있기 때문에 필요한 작업이다.아래는 주문건으로 같은 이름의 수취인이 3건 / 송장이 2건인 상태이다.그래서 송장에 맞는 주문건을 선택해줘야 한다.(특이사항으로 합배송도 있을수 있어서 라디오.. 2026. 1. 14.
10) nonos(No No Stress) - 네이버스토어 엑셀(주문) 업로드 기능 네이버스토어 엑셀 업로드 기능 추가요 기능은 신규주문 또는 네이버스토어 주문 엑셀을 통해서 처리하기 위함이다.신규주문에 보이는 기준이 배송준비 전 신규주문이기 때문에네이버스토어에서 발주확인을 해버리면 신규주문에서 보이지 않는다.아직 api 연동은 안돼있지만 만약에 nonos를 거치지 않고 다른 직원이 네이버스토어에서 발주확인을 해버린다면??nonos에서는 보이지가 않는다;; 결국 아무것도 할수가 없다... nonos에서 한번에 하기 위한 흐름! 즉, 편리함을 추구하지만 이런 예기치 못한 경우도 있기 때문에 추가한 기능이라고 보면 된다.즉, 신규주문 탭에서 처리 또는 배송준비 탭에서 네이버스토어에서 다운받은 엑셀을 가지고 업로드를 하여 2가지 방법으로 주문데이터 처리가 가능하다.미매핑 처리도 동일하게 진행.. 2026. 1. 14.
9) nonos(No No Stress) - 발주(업체별 excel template 구조) 2026.01.03 - [역량 UP!/Business] - 8) nonos(No No Stress) - 배송준비(발주처리)기능 추가이 전 발주기능에 이어서 이번 기능은 업체별 발주엑셀(주문엑셀)이 만들어지는데 여기서 또 하나의 요구사항이 발생!=> 주문엑셀을 업체들이 다시 변환해서 택배사에 보낸다는 사실!! 업체별로 템플릿을 가져야 한다.현재 업체 테이블(=nns_company table)ALTER TABLE nns_company ADD COLUMN export_template_id BIGINT NULL;template관련 테이블CREATE TABLE nns_export_template ( id BIGINT AUTO_INCREMENT PRIMARY KEY, template_na.. 2026. 1. 12.
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.
반응형