전체 글 265

서버 인프라 기초 구현 완료한 부분 정리

서버 인프라 기초 정리배포 파이프라인, 접근 제어, 웹 서버와 WAS, 데이터 저장소, 서버 확장까지 한 번에 정리한 문서다. 예시는 인터넷뱅킹 서비스를 가정한다.1. 배포 파이프라인1-1. 코드 디플로이 방식 4가지GitHub + AWS 조합에서 선택 가능한 방식은 네 가지다.방식어떻게누가 많이 쓰나우리 상황① SSH 접속Actions가 서버에 SSH로 들어가 git pull이나 복사 후 재시작서버 1대인 소규모 팀. 가장 흔함간단하지만 서버 SSH 키를 GitHub에 저장해야 함② 아티팩트 + 서버가 받아감Actions가 S3에 묶음을 올리고 서버가 받아서 설치AWS 공식 방식(CodeDeploy, Elastic Beanstalk가 이 구조)보안 제약이 있는 환경에 적합③ 도커 이미지 저장소Actio..

XIAO nRF52840 Plus 비콘 만들기: 부트로더부터 TX Power 튜닝까지

BLE로 실험하다 보면 결국 "비콘을 직접 만들어봐야겠다"는 순간이 온다. 시중 비콘은 송신 출력(TX Power)이나 광고 주기를 마음대로 못 만지는 경우가 많아서, 근접 판정 실험을 제대로 하려면 개발 보드에 펌웨어를 직접 올리는 게 빠르다. 이 글에는 Seeed Studio의 XIAO nRF52840 Plus를 BLE 비콘으로 만드는 전 과정을 담아보았다.1. XIAO nRF52840 Plus 이름을 세 등분 해보자. nRF52840 — 노르웨이 반도체 회사 Nordic Semiconductor의 무선 칩이다. BLE 5.0을 지원하고, ARM Cortex-M4F 프로세서(64MHz), 1MB 플래시, 256KB RAM이 한 칩에 들어 있다. BLE 외에 Zigbee/Thread용 802.15.4 ..

스마트폰 위치 인식 기술 완전 정리: GNSS, Geofencing, BLE, RSSI, IMU, UWB

GPS부터 UWB까지: 스마트폰은 어떻게 내 위치와 거리를 알아낼까?우리가 흔히 “위치 기술”이라고 부르는 기술은 사실 하나가 아니다. 어떤 기술은 지구상의 절대 좌표를 구하고,어떤 기술은 특정 지역에 들어왔는지를 판단하며,어떤 기술은 주변 기기가 가까운지를 추정하고,어떤 기술은 스마트폰이 어느 방향으로 움직였는지를 측정한다.그리고 최근에는 두 기기 사이의 거리를 수십 센티미터 수준으로 측정하는 기술까지 등장했다. 전체를 가장 단순하게 나누면 다음과 같다.GNSS→ 나는 지구상 어디에 있는가?Geofencing→ 특정 지역 안에 들어왔는가?BLE + RSSI→ 특정 기기가 주변에 있는가?→ 대략 가까운가?IMU→ 스마트폰이 어떻게 움직이고 있는가?Wi-Fi RTT→ Wi-Fi 장비까지 얼마나 떨어져 있는..

라이트테라피 조명 제어 앱으로 복습하는 BLE 기반 IoT 앱 서비스 구조

과거 프로젝트로 작업해봤던 라이트테라피 조명 제어 앱을 복습하며, BLE 기기 탐색·연결·Service/Characteristic 기반 데이터 처리 흐름을 정리했다.iOS 백그라운드 제약, BLE/UWB/NFC 차이, 위치 기반 자동 체크인처럼 IoT 서비스로 확장할 때 필요한 센서 융합 구조도 함께 살펴본다.마지막으로 이런 기능을 SDK로 패키징하고 REST API 서버·운영자 대시보드까지 설계하는 전체 구조를 정리한다. 개념설명예시개념설명예시Central주변 BLE 기기를 찾고 연결하는 쪽iPhone 앱Peripheral자신을 광고하고 데이터를 제공하는 쪽조명, 비콘, 심박계Service기능 묶음조명 제어 서비스Characteristic실제 읽고 쓰는 데이터 단위밝기, 색온도, 전원 상태Adverti..

[OpenAI/Cloudflare R2/Vite]네이버 블로그 자동 발행 크롬 익스텐션 개발기

따로 운영중인 반복적인 네이버 블로그 발행 작업을 줄이기 위해 자동화 프로젝트를 시작했다.처음에는 글 생성 자동화에 집중했지만, 실제로는 네이버 에디터에 내용을 넣고 발행 준비를 마치는 마지막 단계가 가장 큰 병목이었다.이 글은 그 병목을 해결하기 위해 왜 크롬 익스텐션을 선택했는지, 어떤 기술 스택으로 구현했는지, 어디서 어려움을 겪고 있는지까지 전체 과정을 정리한 기록이다. 프로젝트를 시작한 배경블로그 운영 과정에서 주제 정리, 자료 조사, 본문 작성, 이미지 구성, 네이버 업로드, 발행 설정까지 반복되는 수작업이 많았다.러프한 스케치만 된 상태인데, 쉽게 말하면 아래와 같은 서비스다. (아직 구현중) 왜 크롬 익스텐션을 선택했는가네이버 블로그는 공식 글쓰기 API가 없고, 티스토리처럼 단순한 HTM..

[WEB] 2026.05.07

Prisma란? 기존 MySQL과의 차이, 마이그레이션까지 정리

1. Prisma란?Prisma는 Node.js/TypeScript 백엔드(서버)에서 DB를 다룰 때 쓰는 ORM(객체 관계 매핑) 라이브러리다.브라우저용이 아니라, 서버 코드에서만 사용한다.원래(전통적인) 방식은 두 가지다.직접 SQL: mysql, pg 같은 드라이버로 쿼리 문자열을 실행한다.다른 ORM: TypeORM, Sequelize, Drizzle 등.Prisma는 그중에서 스키마 파일 하나로 타입·마이그레이션·클라이언트까지 맞춰 주는 Node/TS용 ORM이라고 보면 된다.2. Prisma의 단점 (요지)러닝 커브: 스키마 문법, generate / migrate 개념, 빌드 타임과 런타임 구분을 알아야 한다.복잡한 쿼리 한계: Raw SQL보다 복잡한 조인·서브쿼리·윈도우 함수는 표현이 어..

[WEB] 2026.03.10

Jira 데이터 마이그레이션 경험 정리 (Node + Prisma 기반 실전 회고)

1. 개요항목내용목적Jira의 프로젝트·이슈·스프린트·댓글·첨부파일·사용자 데이터를 CIRA DB로 일회성 이관하여, CIRA에서 기존 Jira 이력과 구조를 그대로 활용할 수 있게 함.스크립트scripts/jira-migrate.ts실행 환경Node + Prisma + tsx. .env에 CIRA DB 연결 정보와 Jira API 설정 필요. 1. 앞 주소 (Base URL)Base: https://{JIRA_DOMAIN}/rest- JIRA_DOMAIN은 .env의 JIRA_DOMAIN (예: yourcompany.atlassian.net).- 풀 URL:https://{JIRA_DOMAIN}/rest/api/3/users/search예: https://yourcompany.atlassian.net..

[WEB] 2026.02.26

Prisma의 네이티브 Query Engine 구조가 Alpine 환경에서 야기한 런타임 멈춤 이슈 정리

Prisma Query Engine과 Alpine 환경에서 발생한 DB 조회 Hang 이슈 분석 이번 글은 내가 겪은 “배포 서버에서 Prisma DB 조회가 이유 없이 멈추는(hang) 문제”를 스터디용으로 정리한 기록이다. 결론부터 말하면: Cursor(혹은 템플릿)가 node:alpine 기반 Dockerfile을 만들어줬고 Prisma는 내부적으로 네이티브 엔진(실행 파일)을 쓰기 때문에 Alpine(musl) + Prisma 엔진 + 배포 환경(특히 ARM64/AWS) 조합에서 멈춤이 터질 수 있었다 중요한 건, 이 문제가 “코드 로직 버그”라기보다 런타임 환경 호환성 문제라는 점이다. ..

[WEB] 2026.02.25

문제를 쪼개면 해결된다 : AI 시대의 Divide and Conquer

최근 백엔드와 인프라를 공부하면서 낯선 개념을 한 번에 여러 개 마주했다.TerraformDocker / ContainerAWS관련 여러 서비스들 등서버 런타임, 프로세스, 메모리 구조프론트엔드 위주로 개발해오다가 인프라 레이어를 처음 접하니깐 알 수 없는 수많은 서비스와 용어들에 압도되어“어디서부터 이해해야 하지?” 라는 부담부터 먼저 왔다. 하지만 과거라면:책을 여러 권 사고블로그 글의 신뢰도를 검증하고선배 개발자에게 물어보고StackOverflow를 뒤지며 단편적인 정보를 이어 붙이고정리하는 데만 며칠이 걸렸다실제로 개념을 “이해”하기까지 걸리는 시간보다,정확한 정보를 찾는 과정이 더 오래 걸렸다.그런데 지금은 다르다. - AI가 개발자의 일자리를 대체한다는 담론은 계속 나오고 있다.실제 체감으로..

기록/일기 2026.02.11

Next.js 프로젝트에서 Docker·Prisma·DB가 어떻게 연결되는지

1. 도커(Docker)가 무엇인지 부터 사용 전에 한 번 더 알아두자.도커 = “이 앱이 돌아가려면 필요한 환경(Node 버전, OS 라이브러리 등)을 통째로 상자(이미지)로 만들어 두는 도구”네 PC에는 Node 18이 깔려 있는데, 이 프로젝트는 Node 20이 필요할 수 있음.그걸 “우리 프로젝트는 Node 20 + 이 OS에서 돌아가요”라고 Dockerfile로 정의해 두면,어디서든 같은 상자(Docker 이미지)만 쓰면 똑같이 돌아감 (로컬, 동료 PC, AWS 서버 모두).그래서 “배포할 때도 로컬이랑 똑같은 환경”을 쓰려고 Docker를 쓰는 거고,이 프로젝트(사내 지라 프로잭트)에서는 앱(Next.js)을 Docker 이미지로 만들어서 ECR에 올리고, 나중에 ECS에서 그 이미지를 실행..

[WEB] 2026.02.11