GitHub Actions를 이용해 자동 배포를 운영하다 보니 배포될 때마다 타팀에서 종종 문의가 온다.지금 누가 배포중인가요?배포 끝났나요?서비스 화면이 갑자기 안보여요. 개발팀은 GitHub Actions에 직접 들어가면 확인할 수 있지만 팀원 모두가 매번 Actions 페이지를 확인하는 것도 번거롭다.그래서 GitHub Actions에서 배포가 시작되거나 성공/실패했을 때 Slack 채널로 자동 알림이 오도록 설정했다. 설정을 완료하면 최종적으로 이렇게 슬랙 알림이 온다. 1. 구조 확인dev 브랜치 Push / Merge ↓GitHub Actions 실행 ↓배포자 확인 ↓Slack 배포 시작 알림 ↓서버 배포 ↓ 성공 / 실패..
우선 공공데이터포털의 OpenAPI를 사용하기 위해선 회원가입이 필요하다.회원가입 절차 아래 링크 참고2026.07.10 - [그외 기록/운영 및 설정] - [공공데이터포털] 회원가입(가입유형 일반/기업회원 선택) [공공데이터포털] 회원가입(가입유형 일반/기업회원 선택)공공데이터포털공공데이터포털은 정부 및 공공기관에서 제공하는 다양한 데이터를 조회하고 활용할 수 있는 서비스이다.데이터는 OpenAPI 형태 등으로 제공되어 개발자가 프로젝트에서 직접 사built.tistory.com 1. OpenAPI 검색로그인 후 상단 검색창에서 필요한 데이터를 검색한다.필자는 공휴일 정보를 표시하기 위해 "특일" 이라고 검색했다. 한국천문연구원_특일 정보 1건의 검색 결과가 나온다. 2. 활용신청활용신..
파일을 전달할 때 개인정보나 중요한 자료가 포함되어 있다면 압축 파일에 비밀번호를 설정하는 것이 좋다.터미널에서 zip 명령어만으로 비밀번호가 설정된 압축 파일을 만들어보자!🔐 dataset 폴더를 압축하면서 비밀번호를 설정하기로 가정해본다. 1️⃣ 터미널에서 dataset 폴더가 있는 위치로 이동 (dataset 폴더 내부로 이동 ❌)Desktop/└── dataset/ ├── metadata.csv └── images/ 2️⃣ 명령어 실행zip -r -e dataset.zip dataset zip: 압축 파일 생성-r: 폴더 내부의 모든 파일과 하위 폴더까지 함께 압축-e: 압축 파일에 암호 설정dataset.zip: 생성될 압축 파일 이름dataset: 압축할 폴더 3️⃣ 비밀번..
AI 모델 학습을 위해 S3에 저장중인 이미지 500장 이상을 전달해야 하는 업무가 있었다. 정확히는 DB에서 전달할 데이터 조회 → 메타데이터.csv 파일로 생성 → S3 이미지를 일괄 다운로드 → 압축 → 전달까지 하나의 데이터셋으로 만드는 작업이었다.이번 글에서 AWS CLI를 활용해 S3 이미지를 일괄 다운로드하는 과정을 정리해보았다. AWS CLI(Command Line Interface)란?터미널에서 AWS 서비스를 명령어로 제어할 수 있는 도구이다. GUI 대신 명령어를 사용해 다양한 작업을 자동화할 수 있습니다.반복 작업을 스크립트로 처리할 수 있어 대량의 데이터를 다루는 업무에서 특히 유용하다. 🗂️ 데이터셋 구성 (참고)최종 전달 구조는 아래와 같다. 이렇게 구성하면 이미지와..
공공데이터포털공공데이터포털은 정부 및 공공기관에서 제공하는 다양한 데이터를 조회하고 활용할 수 있는 서비스이다.데이터는 OpenAPI 형태 등으로 제공되어 개발자가 프로젝트에서 직접 사용할 수 있다.활용할 OpenAPI를 신청하기 위해 공공데이터포털 회원가입을 진행해보자! 1. 공공데이터포털 홈페이지 접속공공데이터포털에 접속하여 홈페이지 오른쪽 상단의 회원가입으로 이동한다.https://www.data.go.kr/ 공공데이터 포털국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datasewww.data.go.kr 2. 회원가입1단계 - 가입확인 및 회원구분[가입유형..
하루에 많으면 15번 이상 배포 요청이 들어온다.그때마다 작업을 멈추고 서버에 접속해서 git pull, npm install, build, pm2 restart를 반복했다.배포 자체는 몇 분 안 걸리는 작업이지만 하고있던 작업 흐름이 끊기는 건 어쩔 수 없다. 🥹그래서 미뤄놨던 자동배포를 이번에 구축했다. 코드만 올리면 서버까지 자동으로 반영될 수 있도록!(dev 브랜치에 push → GitHub Actions 실행 → 서버 자동 배포 → PM2 재시작) 1. Workflow 파일 생성배포할 각 레포지토리에 .github/workflows/deploy-dev.yml 파일을 추가한다. dev 브랜치에 push가 발생하면 자동으로 배포가 실행된다./.github/workflows/deploy-dev..
에러API 호출시 500 에러가 났고 서버 로그는 The server closed the connection 메시지가 반복적으로 나타나고 있었다.SequelizeConnectionError: Connection lost: The server closed the connection. 해당 에러에는 다양한 원인이 있을 수 있는데,필자는 무료 체험판 크레딧이 모두 소진되면서 GCP Cloud SQL 인스턴스가 자동으로 정지되면서 DB 연결에 오류가 발생한 것이다.failed to connect to instance:fetch ephemeral cert failed:googleapi: Error 409:The instance or operation is not in an appropriate state to ..
갑자기 서버에 CORS 에러가 났다. PM2 로그($pm2 logs)를 확인해보니Error: ENOSPC: no spase left on device, write/home/ubuntu/.pm2/logs/api-error.log last 15 lines:0|api | throw er; // Unhandled 'error' event0|api | ^0|api |0|api | Error: ENOSPC: no space left on device, write0|api | Emitted 'error' event at:0|api | at WriteStream. (/home/ubuntu/calvak-api/node_modules/fil..
기분전환하듯 워치 배경을 바꾸는 편인데 워치페이스가 조금 심심하게 느껴져 마음에 드는 스타일을 다운받아 설정해보았다.다운로드한 워치페이스를 직접 적용하고 원하는 스타일로 워치를 꾸며보자🍭 1. 휴대폰 설정1-1. 설정 > 워치 정보 1-2. 개발자모드 활성화소프트웨어 정보 > 소프트웨어 버전을 5번 연속 클릭 1-3. 블루투스 OFF워치를 Wi-Fi로 연결해 다운로드한 워치페이스를 적용하기 위해서 블루투스를 잠시 비활성화한다. 1-4. 노트북과 같은 와이파이인지 확인🛜를 꾸욱 눌러 현재 연결된 와이파이와 노트북 와이파이 일치 확인 2. 워치 페이스 스튜디오 다운로드2-1. 다운로드아래 링크에서 각 OS에 맞게 다운로드한다. 워치 페이스 스튜디오 다운로드 | Samsung De..
PM2로 Node 서버를 띄우고 있었던 프로젝트에 스케줄링(cron)을 돌리는 로직을 추가하면서cron을 제어하기 위해 .env에 환경변수를 설정해두었는데설정을 미실행으로 해놔도 cron이 돌아가고 있었다. cron 설정 코드if (process.env.NODE_APP_INSTANCE === '0') { cron.schedule('0 * * * *', expiredEmailVerification, cronOption);}NODE_APP_INSTANCE === "0" → cron 실행!= "0" → cron 미실행 .env 설정 (cron 미실행을 위한)NODE_APP_INSTANCE=1 이렇게 하면 조건문에 걸리지 않으니까 cron이 실행되지 않을 거라고 생각했다. 그런데…logs를 보니 스..
1. 카카오 개발자 콘솔 접속https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해 보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com해당 링크에 접속해 카카오 계정으로 로그인한다. 2. 앱 생성① 앱 - 앱 생성 클릭 ② 앱 이름 / 회사명 / 카테고리 입력 후 저장 3. REST API 키 확인앱 - 플랫폼 키에서REST API 키JavaScript 키Native 앱 키를 확인할 수 있다.서버에서 카카오 로그인을 구현할 때 REST API 키를 사용한다. 4. Redirect URI 등록카카오 로그인 성공 후 돌아올 주소를 등..
고마웠던 2025년, 개발자로서의 첫 해 Keep1년만에 이직해 개발팀으로 입사했다. 합격 소식을 들었을 때의 기분은 아직도 생생하다. 엄청 기쁘면서도 얼떨떨했다.기술 스택이 맞는 공고가 많지 않았는데 다행히 유일하게 맞았던 곳에 입사했고 어느덧 6개월 차가 되었다.개발은 여전히 어렵다. 해결되지 않는 문제를 만나면 평생 안 풀릴 것처럼 막막해지고, 어느 순간 해결되면 또 마음이 잔잔해진다.이 감정의 반복이 개발의 묘미인 것 같다. 역시 취준할 때도 겪어봤지만 엉덩이 붙이고 끝까지 파고들면 결국 해결하지 못할 문제는 없다는 것, 이건 앞으로도 변하지 않을 것이다. 업무적으로는 첫 프로젝트에서 프론트엔드 개발자와 통신하면서 발생했던 에러와 예외 사항들을 모두 정리해두었다가 다음 프로젝트에 그대로 참고하..
GitHub Actions로 자동 배포 환경을 셋팅하면서 액세스 키가 필요했다. 액세스 키는 AWS ↔ 외부 시스템을 연결하기 위한 인증 수단이다.우리가 브라우저로 아이디/비밀번호를 입력해서 AWS 콘솔 로그인하여 직접 AWS를 사용하는 것처럼,사람이 아닌 프로그램이 AWS를 제어하기 위해서는 아이디/비밀번호 대신 액세스 키+시크릿 키를 사용한다. 액세스 키를 생성하는 방법은 간단하다. AWS 액세스 키 생성 가이드대로만 따라하면 끝!가이드 문서에 맞춰 하나씩 따라해보자.https://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/create.keypair.html 1. AWS에 로그인 후 IAM 이동https://console.aws.amazon.c..
Swifty Pusher푸시 알림 기능을 구현하다 보면 서버 로직은 다 완성했는데 “왜 알림이 안 오지?”하는 상황이 생겼다.근데 이 문제가 서버인지, iOS 설정인지, APNs 인증 문제인지 판단하기가 쉽지 않다.이 때 사용하는 도구가 Swifty Pusher다.Swifty Pusher는 APNs로 직접 푸시 전송을 해볼 수 있는 macOS 전용 테스트 도구이다.서버를 거치지 않고 iOS 기기에 푸시 알림을 보내 알림이 오지 않으면 어떤 문제인지 파악이 쉬워진다. 푸시 기능은 구현하면서 실제로 디바이스 토큰이 정상적으로 발급된 것인지부터 Swifty Pusher로 먼저 테스트하면서 진행하니 문제 범위를 좀 더 빠르게 좁힐 수 있었다. 푸시 알림 이슈를 빠르게 디버깅하기 위해 Swifty Pusher를..
- Total
- Today
- Yesterday