본문 바로가기
반응형

역량 UP!57

비동기 아키텍처(=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.
4) nonos(No No Stress) - UI 작업 시작! 이번 작업은 UI작업 입니다.기존 DeleteButton 제거하고, OrderButton으로 교체 작업 입니다.체크박스를 클릭하면 전체가 선택이 됩니다. 그리고 오른쪽에 Delete버튼이 생성 됩니다.react-admin에서 제공해주는 디폴트 기능 입니다.주문 리스트에서 버튼 Wrapper를 연결해줍니다.여기서 중요한것은 import { List, Datagrid, TextField, NumberField, ListProps} from "react-admin";import { ReactElement } from "react";import { BulkOrderButtonWrapper } from "./BulkOrderButtonWrapper.tsx";export const .. 2025. 8. 8.
3) nonos(No No Stress) Front 연동하기! + back단 호출 및 화면에 뿌리기 프론트는 react admin을 연동 합니다.cd nonos-front 후에 npm run dev를 하면 아래와 같이 실행 됩니다. 2025.06.20 - [Language/Kotlin] - 프론트엔드(React)와 백엔드(Kotlin)를 함께 배포하는 Monolith 구조 도전기_01저번 버전1에서는 구조를 두개로 나눴는데 트래픽도 없고 배포도 귀찮고 오버스펙일수 있어서 이번에는 Monolith구조로 해보기로 했다.2025.07.21 - [역량 UP!/Business] - 2) nonos(No No Stress) NaverStore Api 분석 및 개발api분석 후 백단 api를 개발했다면 이제 프론트에서 호출을 하여 화면에 뿌려줍니다.react-admin은 아래와 같이 call하는 부분을 dataPr.. 2025. 7. 26.
참고) ISO-8601란? ISO-8601란? : 국제표준 날짜포맷형태YYYY-MM-DDTHH:mm:ssZ또는 offset 포함YYYY-MM-DDTHH:mm:ss+09:00네이버api에서 오류가 발생하는데 인코딩문제 이다.첫번째 YYYY-MM-DDTHH:mm:ssZ 요런 형태로 해주면 된다. UTC기준인데 Z는 +00:00과 같은 의미! 한국시간은 UTC+9시간이다.계속 포맷문제로 삽질을 했었다ㅋㅋ 2025. 7. 26.
2) nonos(No No Stress) NaverStore Api 분석 및 개발 오늘은 NaverStore Api를 분석 해보겠습니다.그런데! NaverStore Api를 사용하려면 액세스토큰이 필요합니다.액세스토큰을 만들려면client_id, client_secret_sign등이 필요한데이 내용은 application을 등록을 해야 네이버스토어에서 제공을 해줍니다.https://apicenter.commerce.naver.com/ko/member/homehttps://apicenter.commerce.naver.com/docs/commerce-api/current/seller-get-product-order-ids-pay-order-seller아래의 형태로 나오는데 원하는 결과의 api는 아니라 패스!curl -L 'https://api.commerce.naver.com/exter.. 2025. 7. 21.
1) nonos(No No Stress) project 시작 :D 프로젝트 개요Easy Naver Store(ENS) 프로젝트의 2차 버전!이제는 이름도, 목표도 더 명확하게 — nonos로 새롭게 시작합니다.(기존 nonomall이 쇼핑몰 느낌이라 nonos로 교체!)프로젝트 배경스마트스토어 운영은 생각보다 ‘스마트’하지 않습니다.여전히 다음과 같은 수작업이 존재합니다주문 조회 후 직접 엑셀 정리업체별 발주용 엑셀 작성이메일 수동 발송송장 수기 입력반복되는 중복 발주프로젝트 대상스마트스토어 사장님 (소형, 중형, 대형 셀러 모두!)상품 소싱/배송을 외주로 처리하는 중소 판매자왜 nonos인가?비효율적인 수작업은 그만!반복적인 작업과 실수로부터 자유로워지는 스마트한 쇼핑몰 운영 툴NO! Stress! — 운영 스트레스를 최소화NO! Mistake! — 실수 없는 발주/.. 2025. 7. 8.
스타트업 창업자 특징 창업가의 특성1. 주도성2. 변화와 혁신3. 자극 추구4. 책임감5. 엄청난 몰입(끝장보는 마인드)6. 일반인보다 ADHD 6배 높음 ( 충동성 - 퇴사바로함, 엄청난 몰입)본인이 하고자하는 비즈니스와 비슷한 5개(20%씩 겹치는)를 알려달라예를들어 비즈니스의 BM설계는 여기의 구조 / 어떤부분은 어떤기술을 사용 어려운상황속 스킬? 혹은 마인드셋이 요구되는가? -> 투자를 받지 않고도 생존할 수 있는 플랜B를 준비하라!프로젝션을 짰을 때 그게 안된다면 떨어지는건 정말 무서움 -> 자금전략이 정말 중요함.초기엔 MVP(Minimum Viable Product), 최소요건제품을 검증할 자금이 필요!이게 있어야 이걸 할 수 있다. 에서 이게 없어도 어떻게 하면 이걸 조금이라도 해보지?자금이 있으면 바로시작할 .. 2025. 7. 3.
17) ENS Project - 시놀리지 NAS에서 스케줄러 돌리기! 상품이 업데이트 되면 배치Job이 돌아서 업데이트를 해줘야하는 작업이 있습니다.그래서 시놀리지 나스에서 스커줄러를 사용하게 되었습니다.크론탭으로 하려고 했는데 크론탭이 없었습니다ㅋㅋ작업스케줄러 > 생성 > 트리거된 작업 > 사용자 정의 스크립트사용자 정의 스크립트를 작성해주시면 됩니다.#!/bin/bashwhile true; do curl -X GET "http:블라블라/batchMakeOptionApiData" -H "Content-Type: application/json" echo "Request sent at: $(date)" sleep 600 # 10분 (600초) 대기done결과 batch job 끝~will do로는 오래된 데이터를 삭제해야겠군요! :) 단, 하나는 남겨두고요ㅋㅋ 업데이트.. 2025. 2. 13.
16) ENS Project - Server 산정 및 배포! AWS는 시기상조라 시놀리지 NAS에 배포하기로 마음 먹고 셋팅을 하였습니다.NAS에 Docker를 관리하는 Container Manager라는게 있어서 사용했습니다.MySQL을 셋팅하고 로컬에서 연동 테스트를 진행 하였습니다.셋팅은 간단하게~다운받아서 포트 설정을 해주고폴더추가에서 docker폴더를 선택하고 mysql폴더를 생성!/mysql로 매핑해줌. 아래의 설정으로!완료 후 자동실행 됩니다! domain 설정 - 시놀리지나스에서는 하나의 도메인을 무료로 제공해줍니다! 개이득~외부엑세스 > DDNS도커 컨테이너에 대한 접근 또한!NAS에 Docker로 배포한 MySQL, Spring Boot, React 애플리케이션 등은 기본적으로 내부 네트워크에서만 접근 가능합니다.외부에서 접근하려면 라우터에서 특.. 2025. 2. 12.
15) ENS Project - 상품 데이터를 체크하자! 발주 처리를 위해서 업체별 상품 데이터를 최신으로 가지고 있어야 합니다.주문으로 들어오는 데이터는 최신으로 반영된 데이터를 가지고 있어야 비교하여 발주를 해주기 때문 입니다.물론 상품 변경 전 데이터도 가지고 있어야 합니다. 혹시 모를 상품 변경 전에 주문이 들어왔을수도 있기 때문 입니다.그래서 테이블을 업체 테이블 하나와 상품 테이블 하나를 만들었습니다.발주처리 전 체크를 해야 합니다.혹은 상품 데이터를 주기적으로 변경사항을 체크하여 업데이트 해주는 배치가 돌아야 합니다.변경사항이 많다면 발주처리가 무척 느려질수 있습니다. 하지만 배치를 돌리기에는 서버도 마땅치 않고 우선 실시간적으로 느리지만 괜찮아~버전으로 개발해보겠습니다ㅋㅋJson to DataBase네이버스토어 상품에는 여러가지가 있다..본상품과.. 2025. 1. 15.
14) ENS Project - 송장 시스템 2024.12.27 - [OpenSource/Spring Boot] - 13) ENS Project - 발주 시스템발주 시스템에 이어서 이제 송장을 받아서 네이버스토어에 일괄처리를 해줘야 합니다.그러기 위해서는 네이버스토어 일괄처리 양식에 맞게 저장된 엑셀이 필요 합니다.송장 시스템에는 2가지 엑셀 파일이 필요 합니다.발주 시스템에서 나온 주문내역인 엑셀 파일 하나그리고 택배사를 통해서 송장이 나온 엑셀 파일 하나2개의 파일을 넣고 송장처리 버튼을 눌러주면 아래와 같이 네이버스토어 일괄처리를 위한 엑셀 파일 하나가 만들어 집니다.내용은 아래와 같이 네이버스토어에서 원하는 양식 입니다.그리고 송장시스템을 확인하고 수정작업이 필요하면 파일을 선택 후 택배사 변경이나 추가&삭제를 한 뒤에 저장을 하시면 됩니다.. 2024. 12. 27.
13) ENS Project - 발주 시스템 개인 프로젝트로 만들고 있는 서비스 입니다.발주 시스템요 시스템은 네이버스토어에 신규 주문건들이 들어오면 엑셀을 다운 받아서 신규 엑셀을 만들어줍니다.(네이버스토어에서 다운받은 엑셀은 암호화가 되어있습니다.)파일을 선택 후 발주처리를 진행!..처리가 완료되면 zip파일이 다운로드 됩니다.아래와 같이 상품(업체)별로 엑셀이 나옵니다.  이제 발주시스템은 네이버스토어에서 나온 발주이며, 문자고객이 있을수 있습니다.문자고객은 기존 상품에서 추가를 합니다.발주처리를 위해 a.i를 통해서 아래처럼 네이버스토어에 있는 타이틀을 가지고 이름과 업체명을 만들어줍니다.{ "id": "2994144279", "name": "손질과메기 20미리 단품", "company": "포항구룡포 과메기 농장", "title":.. 2024. 12. 27.
12) ENS Project - accessToken 발급 및 로그아웃 100만년만에 다시 개인프로젝트 시작!! ㅋㅋㅋ이전글 : 2024.11.08 - [Front/React.js] - 11) ENS Project - Naver 로그인을 구현해보자!참고 하세요~추억의 jsp로 개발된 소스!참고 : https://developers.naver.com/docs/login/web/web.md네이버 로그인 접근토큰 획득 예제는 2개의 프로그램으로 구성되어 있습니다. (naverlogin.jsp, callback.jsp)2. callback.jsp 예전에 스터디로 책선정을해서 OAuth2로 네이버 로그인을 추가했던적이 있습니다.2022.01.06 - [Study/Study group] - OAuth2 구글, 네이버 로그인 추가 아래처럼 application.yml에 스프.. 2024. 12. 22.
11) ENS Project - Naver 로그인을 구현해보자! 사이트에서 로그인이 필요하다!네이버 관련 프로젝트이니 네이버 로그인을 구현해보자:)https://developers.naver.com/docs/login/devguide/devguide.md이전에 Oauth2.0을 스프링시큐리티로 인증서버와 리소스서버를 만들었던적이 있었는데네이버 로그인 역시 Oauth2.0을 따르고 있다.대충 아래처럼 만들면 될것 같다! ㅋㅋ1. 네이버로그인 버튼을 클릭!// authProvider.tsconst authProvider = { generateRandomString :() => { const randomBigInt = bigInt.randBetween("1e130", "1e131"); // 130자리 난수를 생성 return randomBigInt.toStri.. 2024. 11. 8.
10) ENS Project - CSS Framework 사용해보기 OverviewReact로 개발 시 디자인을 무에서 유를 창조하기에는 힘들다.이런 힘듬을 보완하기 위해 CSS Framework인 MUI를 사용하여 Ui 구성요소를 살펴보고 사용해보기로 한다.Example아래의 예제를 셋팅해서 띄워보고 컴포넌트들을 살펴보자.https://github.com/marmelab/material-ui-react-admin?tab=readme-ov-filehttps://marmelab.com/react-admin/Features.htmlhttps://marmelab.com/react-admin/CreateReactAdmin.htmlCreateReactAdminCSS Framework를 통해 우선적으로 개발 진행여러가지 Framework가 있지만 우선 아래의 Framework를 사.. 2024. 11. 4.
9) ENS Project - 프론트엔드 후딱 학습하기(React Deep Dive!!) 2024.10.15 - [Front/React.js] - 8) ENS Project - 프론트엔드 후딱 학습하기(리액트 컴포넌트, JSX, 속성, 상태)저번시간에 이어서 오늘은 더욱 더 깊은 심화과정 입니다! 저장을 잘하면서 포스팅 해보도록 하겠습니다:)Point!!- JSX를 꼭 사용하지 않아도 되는 이유- 컴포넌트 트리를 설계하는 방법 + 프로젝트를 더 효율적으로 구성하는 방법- State 사용의 상급 개념과 특정 상급 개념을 살펴봅니다.     ㄴ 저번시간엔 useState()를 사용했습니다.- 자주 사용되는 중요 패턴과 Best Practices를 살펴봅니다.JSX를 꼭 사용하지 않아도 되는 이유?React Code는 Build Process를 통해서 변경 됩니다. 결과적으로 배포가능한 파일로 말.. 2024. 10. 31.
반응형