글

라벨이 프로젝트설정인 게시물 표시

10.Python config.json 파일 읽고 저장하는 방법 — 설정 파일 관리 완벽 가이드

이미지
 저도 처음엔 데이터베이스 주소나 결과물 저장 경로를 소스 코드 상단에 변수로 적어두고 썼습니다. 개발할 때는 로컬 경로로 바꿨다가, 서버에 올릴 때는 다시 운영 서버 경로로 바꾸는 작업을 매번 수동으로 진행했죠. 그러다 어느 날 단 하나의 경로를 미처 고치지 않고 배포하는 바람에, 실제 운영 데이터가 로컬 테스트 데이터에 덮어써 지는 대형 사고 를 쳤습니다. 수습하느라 주말 16시간을 통째로 날린 뒤 , 설정값은 무조건 코드와 분리해야 한다는 걸 깨닫고 config.json 을 도입했습니다.   Python 프로젝트에서 config.json 파일을 활용한 설정 관리는 코드의 유연성과 유지보수성을 크게 향상시킵니다. 이 글에서는 JSON 파일로 설정을 읽고 저장하는 기본부터, 중첩 구조 처리, 기본값 관리, 그리고 .env 파일과의 역할 분리까지 — VS Code 환경에서 실무에 바로 쓸 수 있는 수준으로 안내해 드리겠습니다. config.json이 필요한 이유 — 코드와 설정을 분리하는 것 설정값을 코드에 직접 넣으면 생기는 문제 프로그램을 개발하다 보면 자주 바뀌는 값들이 생깁니다. API 서버 주소, 최대 요청 횟수, 파일 저장 경로, 알림 조건 수치 같은 것들입니다. 이 값들을 코드 안에 직접 넣으면 값 하나를 바꿀 때마다 코드를 열고, 수정하고, 저장하고, 다시 실행해야 합니다. 이를 레스토랑에 비유하면 이렇습니다. 메뉴판(config.json)은 따로 있고, 요리사(코드)는 메뉴판을 보고 요리합니다. 메뉴를 바꿀 때 요리사의 머릿속(코드)을 바꾸는 것이 아니라 메뉴판(설정 파일)만 바꾸면 됩니다. 코드는 건드리지 않아도 프로그램의 동작이 달라집니다. .env 파일과 config.json의 역할 차이 두 파일을 함께 쓰는 경우가 많아 혼동하기 쉽습니다. 역할은 명확히 다릅니다. 구분 .env 파일 config.json 용도 비밀 정보 (API Key, 비밀번호) 일반 설정값 (경로, 수치, 옵션)...

9.Python .env 파일 사용법 — API Key를 안전하게 관리하는 방법

이미지
저도 처음엔 AWS나 OpenAI API Key를 소스 코드에 그대로 적어두었다가 무심코 깃허브 퍼블릭 저장소에 올린 적이 있습니다. 정확히 3분 뒤, 봇(Bot) 크롤러에 털려 해외에서 수십만 원이 결제되었다는 요금 폭탄 메일 을 받고 온몸의 피가 마르는 식은땀을 흘렸죠. 부랴부랴 키를 폐기하고 계정을 정지 요청하며 지옥 같은 반나절을 보낸 뒤로는, 아무리 작은 토이 프로젝트를 하더라도 .env 파일 설정부터 먼저 하고 개발을 시작하는 버릇이 생겼습니다 API Key를 코드에 직접 넣는 순간, 그 키는 더 이상 비밀이 아닙니다. 이 글에서는 .env 파일이 무엇인지부터, python-dotenv 라이브러리 사용법, .gitignore 설정, 그리고 VS Code에서 효율적으로 관리하는 방법까지 — API Key 보안의 전 과정을 안내해 드리겠습니다. API Key를 코드에 직접 넣으면 안 되는 이유 깃허브에 올리는 순간 전 세계에 공개됩니다 개발을 처음 시작하면 이런 코드를 자연스럽게 작성하게 됩니다. # 절대 하면 안 되는 방식 api_key = "sk-abcd1234efgh5678ijkl" response = openai.ChatCompletion.create(api_key=api_key, ...) 이 코드를 깃허브에 올리는 순간 어떤 일이 벌어질까요? 전 세계 수백만 명이 볼 수 있는 공개 저장소에 내 API Key가 그대로 노출됩니다. 더 무서운 것은 코드를 삭제해도 커밋 이력에는 영원히 남는다 는 사실입니다. 깃허브에는 API Key를 자동으로 탐지하는 봇들이 돌아다니고 있어, 업로드 후 수 분 안에 키가 악용되는 사례도 실제로 발생합니다. 마치 집 열쇠 사진을 SNS에 올리는 것과 같습니다. 열쇠 자체가 아닌 사진이지만, 그것만으로도 누군가 복제할 수 있는 충분한 정보가 됩니다. 개발 환경과 운영 환경을 분리해야 합니다 실제 서비스를 운영하다 보면 환경이 여러 개로 나뉩니다. 개발 환경(local) — 테스트용 API...