전체 글 299

[포트폴리오] 반도체 소재 제조 현장의 공정·품질 데이터 시스템 구축기

반도체 소재 제조사에서 근무하며, 현장 장비 데이터를 수집·분석해 품질과 운영을 관리하는 시스템을 직접 설계·구축했다.이 글에서는 그중 대표적인 두 가지를 정리한다. 하나는 공정/품질을 통계적으로 관리하는 SPC(Statistical Process Control), 다른 하나는 분석·평가실의 장비 운영을 다루는 FIMS(Fab Information Management System)다. 두 시스템 모두 "현장에서 실제로 쓰이는 데이터를, 사람 손을 거치지 않고, 신뢰할 수 있게 다룬다"는 같은 문제의식에서 출발했다.1. SPC(통계적 공정관리) 시스템 구축배경제조 현장에는 공정별로 품질 편차가 존재했고, 설비에 이상이 생겼을 때 이를 실시간으로 감지해 대응하기가 어려웠다. 고객 불량이 발생하면 근거 자료가..

Bumday/About Me 2026.08.04

PC작업을 하지 않고 앱을 개발하고 운영하는 방법

운영 중인 앱 서비스를, PC 앞에 앉지 않고도 기획부터 배포 검증까지 유지보수한 방법을 정리한다. 핵심은 세 가지다. 원격으로 명령하는 AI 코딩 에이전트, 사람이 앉아서 하던 일까지 걷어낸 CI/CD, 그리고 이동 중에도 쓰는 음성 대화다.배경현재 육아와 병행하는 상황에서는 PC 앞에 앉아서 작업을 하기 어렵다. 하루 왕복 2시간의 운전 통근의 상황도 있다. 그럼에도 개인적으로 운영하는 앱 서비스(클라이언트 앱, API 서버, 내부 운영 콘솔로 구성)는 기능 추가와 버그 대응이 계속 필요하다. 예전에는 이 과정을 전부 PC 앞에서 직접 해야 했다. 지금은 대부분을 자리에 앉지 않고 처리한다. 1. 기획부터 개발까지, 채팅으로 원격 명령요즘 개발은 상당 부분 AI 에이전트가 한다. 최근에는 Claud..

Record/IT Diary 2026.07.23

운영 서버 CPU가 100%로 멈춘 뒤 악성 cron 제거 및 DB 계정 분리한 사례

운영 서버 CPU가 100%까지 치솟아 응답이 멈췄다. 처음에는 새로 추가한 시스템 메트릭 샘플러를 의심했으나, 최종 원인은 postgres OS 유저 crontab에 심어진 악성 wget | sh 스크립트였다. cron 제거 후 API DB 접속을 postgres 슈퍼유저에서 [앱DB계정] 전용 계정으로 분리해 재발 가능성을 줄였다. 증상평소 CPU 약 14% 유지특정 새벽 02:30 전후 CPU 100% → 서버 응답 불가[API프로세스] 재시작·재부팅 후에도 부하 지속 (cron 미삭제 시)동시에 시스템 메트릭 테이블 10초 INSERT 로그가 syslog에 대량 기록됨 → 처음엔 메트릭 기능이 원인으로 의심됨 어떻게 좁혔나1) 메트릭 샘플러 의심 (오탐)SystemMetricsManager가 10..

Windows Cursor 터미널 한글 깨짐, PowerShell 프로필로 해결하는 방법

Cursor 터미널과 Git에서 한글이 깨지는 건 대부분 Windows 코드페이지(CP949) 때문이다. PowerShell 프로필에 UTF-8 자동 전환 스크립트를 넣으면 터미널·Git 커밋까지 대부분 같이 해결된다. 절차1단계: PowerShell 프로필 만들기경로 (Windows PowerShell 5.1):C:\Users\\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 PowerShell 7+(pwsh)라면:C:\Users\\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 파일이 없으면 새로 만들고, 아래 내용을 넣는다.if ($Host.Name -eq 'ConsoleHost') {..

Windows 비밀번호를 잊었을 때 포맷 없이 복구하는 방법

회사 보안 프로그램이 주기적으로 비밀번호 변경을 요구해, 해당 프로그램 내에서 멍때리고 새로운 패스워드를 입력했다가..이후 로그인할때 기억하는 모든 패스워드를 쳐봐도 로그인이 되지 않았다..(ㅠㅠ) Windows 로그인 비밀번호를 분실했을 때, 포맷 없이 기존 데이터를 유지한 채 CMD 우회법으로 비밀번호를 강제 변경하는 방법이다. 핵심은 설치 USB 복구 환경에서 접근성 실행 파일(utilman.exe)을 cmd.exe로 교체해, 로그인 화면에서 시스템 권한 CMD를 실행하는 것이다. 배경다음 상황에서 사용한다.로그인 화면에서 비밀번호 입력이 막히고, Microsoft 계정 온라인 재설정도 보안 질문 분실 등으로 불가능한 경우데이터 유실 없이 해결해야 해서 포맷이 선택지가 될 수 없는 경우 원리는 ..

Window 2026.06.18

운영 미배포 작업을 보류 브랜치로 분리해 관리하는 방법

운영 배포 전 main에만 올린 작업을 취소해야 하는데, 이미 개발 환경 배포 브랜치에는 반영돼서 그쪽은 건드릴 수 없는 상황. 별도 보류 브랜치에 작업을 먼저 백업한 뒤, main에서는 git revert로 되돌리고, 운영 배포 시점에 보류 브랜치를 다시 합치는 방식으로 해결한다. 배경배포 흐름이 아래처럼 분리된 환경을 가정한다.feat/* → main → 개발 배포 브랜치 → 개발 환경 배포feat/* → main → 운영 배포 브랜치 → 운영 환경 배포작업을 main에 올리고 개발 배포 브랜치까지 merge해 개발 환경에는 이미 반영됐지만, 운영 배포 브랜치에는 아직 merge하지 않은 시점에 다음 배포 일정이 미뤄지는 경우가 있다. 이때 main은 다음 운영 배포 전까지 깨끗한 상태를 유지해야..

Git 2026.06.18

eGovFrame 채번 테이블 불일치로 메뉴 ID가 중복된 사례

eGovFrame 기반 시스템에서 메뉴 등록 후 웹페이지가 멈추거나 Duplicate Key 오류가 발생했다. 최종 원인은 채번 테이블의 NEXT_ID가 실제 데이터 최댓값보다 작았고, 대상 테이블에 PK 제약이 없어 중복 삽입이 즉시 막히지 않았던 것이다. 증상관리 화면에서 메뉴 등록·저장 시 오류가 발생하거나, 저장 후 메뉴 트리·특정 페이지가 로딩되지 않는다(먹통)애플리케이션 로그에 Duplicate entry / Unique constraint violation 류 메시지가 남는다DB에는 이미 동일 entityId(메뉴 ID) 를 가진 행이 2건 이상 존재할 수 있다처음에는 애플리케이션 버그·캐시 문제를 의심했으나, 채번 값과 실데이터 불일치 쪽으로 좁혀졌다 어떻게 좁혔나1) 오류 시점·경..

Framework 2026.06.16

싱글톤 Bean 공유 상태로 동시 Ajax 응답이 섞인 사례

화면에서 API1은 1건, API2는 3건이 내려와야 하는데, Network 탭에서 둘 다 3건으로 보이는 현상이 간헐적으로 발생했다. SQL·파라미터·배포를 의심했지만, 최종 원인은 Spring 싱글톤 Bean이 공유 응답 객체를 동시 요청이 덮어쓴 것이었다. 증상팝업(또는 특정 화면) 로드 시 Ajax 2개가 동시에 호출된다API1 응답은 1건이어야 정상인데, Network에서 3건으로 보이는 경우가 있다API2 응답도 3건이며, API1과 JSON 내용이 완전히 동일하다드롭다운 등 UI에 같은 라벨·다른 코드값이 여러 건 노출되고, 잘못된 값이 저장될 수 있다API1·SQL을 단독 호출하면 항상 1건 → DB·SQL·파라미터 문제는 아닌 것으로 보였다 어떻게 좁혔나1) SQL·파라미터 소거검증..

외부망에서만 API가 Empty Response로 끊긴 사례 해결

외부망에서만 API 임시저장이 응답 없이 끊겼다. 애플리케이션 로그는 없었고, 내부망에서는 같은 기능이 정상 동작했다. 증상POST 직후 HTTP 상태·본문 없음 (약 40ms, 타임아웃 아님)브라우저 Network Timing: Waiting(TTFB) 구간 없음 → 응답 첫 바이트조차 오기 전에 끊김 (아래 참고)브라우저: ERR_EMPTY_RESPONSE / curl: (52) Empty reply from server내부망에서는 동일 기능 정상, 외부망에서만 재현 처음에는 폼 null, 임시저장 불러오기, DB 오류를 의심했지만, curl로도 재현되고 body를 줄이면 400 JSON이 돌아와 앱·경로는 살아 있음이 확인됐다. API가 통째로 죽은 상황은 아니었다. 어떻게 좁혔나1) body..

[Troubleshooting] Maven "was cached in the local repository" — 폐쇄망 빌드 서버에서 캐시된 실패 처리

parent POM을 Nexus에 올렸는데도 빌드가 또 실패했다. 원인은 Maven이 이전에 실패한 해석 결과를 로컬 캐시에 저장해두고 계속 실패로 처리하고 있었기 때문이었다. 1. 증상parent POM을 Nexus에 올리고 다시 빌드를 돌렸는데 또 같은 에러가 떴다.[ERROR] Failed to execute goal on project my-project: Could not resolve dependencies ... Failure to find com.github.librepdf:openpdf-parent:pom:1.3.30.jaspersoft.2 in http://nexus.internal:8081/repository/maven-public/ was cached in the..

Java/Maven 2026.06.03
반응형