본문 바로가기

전체 글20

코드 리뷰를 AI에게 맡겼다 되돌린 오후 1. AI를 동료라고 부르기까지 걸린 시간저는 2025년 3월부터 업무용 AI를 본격적으로 쓰기 시작했다. 당시에는 회의록을 정리하고 간단한 파이썬 코드를 작성하는 정도라서, 검색창보다 조금 편한 도구라고 여겼다. 생각이 바뀐 계기는 4월 둘째 주에 진행한 자동매매 프로젝트였다. 혼자 사흘 동안 붙잡던 오류를 AI가 몇 초 만에 찾아냈지만, 그 답을 그대로 적용한 뒤 주문 수량이 예상보다 10배 크게 계산되는 사고도 겪었다. 그날 이후 저는 AI를 유능한 비서가 아니라 확인이 필요한 동료로 대하기 시작했다.2. 첫 실패는 엉성한 질문에서 시작됐다제가 처음 던진 질문은 단순했다. 수익률을 높이는 매매 로직을 만들어 달라고 적고 종목과 기간도 제대로 밝히지 않았다. AI는 그럴듯한 코드와 설명을 내놓았고, .. 2026. 9. 7.
라즈베리파이에 추론을 올려보다 전원부터 막힌 기록 1. 클라우드만 믿고 시작했던 첫 프로젝트저는 2025년 3월, 물류 창고에 설치된 카메라 48대의 영상을 클라우드로 보내 불량 상자를 판별하는 프로젝트를 맡았다. 처음에는 서버를 직접 관리하지 않아도 되고 확장도 편하다는 이유로 모든 영상을 서울 리전에 전송했다. 개발 초반에는 화면이 매끄럽게 보였지만, 카메라 수를 80대로 늘린 뒤부터 판정 결과가 평균 1.8초씩 늦어졌다. 작업자는 이미 상자를 다음 공정으로 넘긴 뒤에야 불량 알림을 받았고, 저는 그때 엣지가 단순한 유행어가 아니라 현장 지연을 줄이는 설계 방식이라는 점을 체감했다.당시 창고와 클라우드 사이의 왕복 지연은 평소 70~90ms 정도였지만, 오전 9시처럼 작업량이 몰리는 시간에는 240ms까지 튀었다. 영상 한 대가 초당 약 4MB를 전.. 2026. 9. 7.
함수를 나누다 테스트가 한꺼번에 깨진 기록 1. 2024년 3월, 작동만 하던 주문 수집기를 만나다저는 2024년 3월에 소규모 쇼핑몰의 주문 수집기를 맡으면서 리팩토링을 미루면 어떤 일이 생기는지 제대로 겪었다. 화면에서는 주문이 정상적으로 들어왔지만, 운영자가 상품명을 조금만 바꿔도 엉뚱한 카테고리로 분류됐고 같은 주문이 두 번 저장되는 문제도 일어났다. 당시 파일 하나에 900줄이 넘는 함수가 들어 있었고, 변수 이름은 a, b, temp처럼 의미를 짐작하기 어려웠다. 처음에는 기능만 고치면 된다고 생각해 조건문 한 줄을 추가했는데, 그날 저녁 배송비 계산이 전부 어긋났다. 이때 저는 코드가 실행된다는 사실과 다른 사람이 안심하고 수정할 수 있다는 상태가 전혀 다르다는 점을 체감했다.제가 제일 먼저 한 일은 멋진 구조를 만드는 게 아니라 고.. 2026. 9. 7.
개인 프로젝트에 2단계 인증을 달면서 잠긴 계정 1. 2026년 1월, AI 피싱 메일에 제가 속을 뻔한 이유저는 2026년 1월부터 소규모 자동매매 시스템을 운영하면서 매일 오전 9시에 보안 로그와 서버 알림을 확인하고 있다. 어느 날 거래소 API 키가 만료된다는 안내 메일을 받았는데, 발신자 이름과 문장 흐름이 평소 거래소 공지와 거의 같았다. 메일 안에는 24시간 안에 인증하지 않으면 거래가 중단된다는 내용과 로그인 주소가 들어 있었다. 저는 처음에 링크를 누르려다가 주소창의 도메인 철자가 한 글자 다르다는 사실을 발견했다. 예전 같으면 문장 어색함을 보고 걸러냈겠지만, 생성형 AI가 만든 문장은 그런 단서를 거의 남기지 않았다. 그날 이후 저는 메일의 문체보다 링크 주소, 로그인 이력, 별도 채널 확인 절차를 먼저 보는 습관을 들였다.2. A.. 2026. 8. 24.
리팩토링을 미루다 배포가 하루 밀린 날 2024년 3월, 제가 운영하던 파이썬 기반 자동매매 서버는 평소보다 주문량이 조금 늘어난 날 멈췄다. 기능 자체는 정상 작동했지만 오전 9시부터 10시 사이 메모리 사용량이 1.8GB에서 7.6GB까지 치솟았고, 결국 주문 확인 작업이 11분 동안 밀렸다. 처음에는 거래소 API 문제라고 생각했지만 로그를 따라가 보니 주문 처리 함수 하나가 응답 객체를 리스트에 계속 쌓고 있었다. 그날 이후 저는 ‘실행되는 코드’와 ‘운영 가능한 코드’가 전혀 다르다는 사실을 몸으로 배웠다.1. 작동만 하던 코드가 만든 장애처음 작성한 시스템은 기능을 빨리 붙이는 데 초점을 맞췄다. 시세 수집, 매수 판단, 손절 주문, 텔레그램 알림을 420줄짜리 trading.py 파일에 몰아넣었고, 변수 이름도 temp1, res.. 2026. 8. 23.
전체 코드를 Gemini에 넣었다가 분류가 빗나간 밤 밤샘 디버깅에서 Gemini를 만난 장면저는 Python으로 이메일 자동 분류 기능을 만들던 밤, 분류 결과가 계속 엉뚱하게 나와서 1시간 넘게 디버깅했습니다. 처음에는 Gemini API에 전체 프로젝트 코드를 한꺼번에 넣고 완성된 해결책을 요구했지만, Gemini가 제 프로젝트의 함수 이름과 데이터 형식을 정확히 알 수 없어서 수정안이 여러 번 빗나갔습니다. 저는 그때 AI가 코드를 대신 완성해 주면 바로 실행할 수 있다고 생각했지만, 실제 장면에서는 입력 조건을 정리하지 않은 제 쪽의 문제가 더 컸습니다.이후 Python 코드를 이메일 수신, 제목 추출, 분류 기준 적용, 결과 저장의 4개 단계로 나누고 Gemini API에 한 단계씩 질문했습니다. 먼저 오류가 발생한 함수와 입력 예시 3개만 전달.. 2026. 8. 9.