전체 글 18

[하루 1 CS] 데이터베이스 4 - 데이터베이스 설계 과정

관계형 데이터베이스의 키와 데이터베이스의 연관 관계에 대해 알아봤으니, 이번에는 데이터베이스를 실제로 어떻게 설계하는지 그 과정을 살펴보겠다.그냥 테이블 바로 만들면 안 될까? 라는 생각이 들 수 있다. 물론 간단한 토이 프로젝트라면 상관없겠지만, 어느 정도 규모가 있는 시스템이라면 설계 없이 만들었다가 나중에 구조를 갈아엎는 상황이 반드시 온다. 따라서 체계적인 설계 과정이 필요하다.데이터베이스 설계는 크게 다음과 같은 5단계로 진행된다.요구사항 분석개념적 설계논리적 설계물리적 설계구현이제 하나씩 알아보겠다.1. 요구사항 분석첫 번째 단계이자 가장 중요한 단계다. 이 단계에서는 데이터베이스를 사용할 사람이 어떤 정보를 저장하고 조회해야 하는지를 파악한다.쉽게 말해 "이 시스템에서 어떤 데이터가 필요하고..

코딩/하루 1 CS 2026.06.16

[하루 1 CS] 데이터베이스 3 - 테이블의 연관 관계

데이터베이스 3번째 포스트이다. 이번에는 RDB에서의 테이블 간의 연관 관계를 짧게 정리해보겠다.데이터베이스의 연관 관계란?데이터베이스에서 테이블 간의 데이터는 서로에게 연관된 정보를 품고 종속될 수 있다. 이러한 테이블 간의 관계를 릴레이션(Relation)이라고 하고, 연관 관계, 관계, 연관 등 다양하게 표현할 수 있다.데이터베이스의 연관 관계는 크게 세가지로 분류된다.1:11:NN:1N:M하나씩 살펴보자.1. 1:1 관계1:1 관계는 가장 간단한 관계이다. 하나의 레코드가 다른 테이블의 하나의 레코드와 연관 관계를 갖는다는 것을 의미한다.쉽게 예시를 보면서 이해해보자. [책] 테이블제목저자채식주의자한강해리포터J.K 롤링그리고 아무도 없었다애거서 크리스티[저자] 테이블저자국적한강대한민국J.K 롤링영..

코딩/하루 1 CS 2026.06.15

[하루 1 CS] 데이터베이스 2 - 테이블의 키

이번에는 관계형 데이터베이스(Relational Database)의 다양한 종류의 키(Key)와 그 역할, 의미에 대해 알아보겠다.Key란?관계형 데이터베이스에서 키는 매우 중요한 역할을 수행한다. 테이블 내부의 레코드들을 고유하게 식별하고, 다른 테이블과의 연관 관계를 맺는 기준이 되기 때문이다.키는 기본적으로 데이터베이스 테이블의 요소인 속성(Attribute)으로 정의된다. 하나의 속성이 하나의 키가 될 수도 있고, 여러 속성의 쌍(Attribute Pair)이 하나의 키를 정의할 수도 있다. 키는 개념의 포함 관계와 목적에 따라 다음과 같이 분류된다.슈퍼키 (Super Key)후보키 (Candidate Key)기본키 (Primary Key)외래키 (Foreign Key)이제 개념의 가장 큰 틀인 ..

코딩/하루 1 CS 2026.06.13

[하루 1 CS] 데이터베이스 1 - 기본 개념과 DBMS

먼저 데이터베이스에 대한 개념을 정리하겠다.데이터베이스란?사전적 의미로는 어렵게 생각하지 않아도 된다.정보 데이터를 디지털화하여 만든 집합소라고 생각하면 된다. 개인적인 정보 저장 외에도 기업, 정부와 같은 조직 사이에서도 공유하고 관리할 수 있도록 설계한다.데이터베이스 자체로는 보관소의 역할을 하고, 여기에 DBMS라는 소프트웨어를 얹어서 검색과 데이터 추가, 삭제와 같은 연산을 한다.DBMS란?DataBase Management System (DBMS)는 데이터베이스에 CRUD 작업을 가능하게 한다.Create: 데이터베이스 생성 및 레코드 추가Read: 데이터베이스 정보 회수 및 조회Update: 데이터베이스 정보 수정 및 업데이트Delete: 데이터베이스 정보 삭제CRUD는 데이터베이스를 다루는 ..

코딩/하루 1 CS 2026.06.12

[하루 1 CS] 시작

이제 컴퓨터공학과 4학년으로서 전공 수업도 들었고, 많은 CS 개념을 배우게 되었다.하지만 사람은 망각의 동물인지라... 어딘가에 기록하지 않거나 복습하지 않으면 자연스럽게 까먹을 수 밖에 없다.따라서 더 늦기 전에 오늘부터 짧더라도 하루에 CS 전공 지식을 하나씩 기록해보겠다.부담되지 않는 선에서 포스팅해보도록 하겠다. 내용이 길면 여러 차례로 이어서 올라올 수도...너무 짧으면 좀 그러니까 우리 집 강아지 사진이라도 올려보겠다.그럼 바로 시작

코딩/하루 1 CS 2026.06.11

[탄소중립 아카데미 6기] API 최적화하기

배경EcoCache 프로젝트에 /chat API를 붙이면서 탄소 배출량 모니터링 기능도 함께 통합했다. 매 요청마다 현재 탄소 집약도(Carbon Intensity, CI)를 가져와서 응답에 포함시키는 구조였는데, 어느 순간부터 API 응답이 굉장히 느려지기 시작했다.처음엔 LLM 응답 생성이 느린 건가 싶었다. 근데 실제로 timings 필드를 찍어보니 이상한 곳에서 5초가 넘게 잡히고 있었다.병목 1: Carbon API 호출첫 번째 문제는 _get_current_ci() 함수였다. 매 /chat 요청마다 Electricity Maps 외부 API를 직접 호출하고 있었다. 네트워크 레이턴시가 합쳐지면서 운이 나쁘면 몇 초씩 걸렸다.구조를 바꿨다. carbon/collector.py가 15분마다 CI ..

탄소중립 2026.06.08

[홈서버 구축기] 도메인 연결하기

홈서버를 기왕 만들었으면 나만의 사이트를 만들고 호스팅을 해보고 싶은 욕구가 슬슬 생기기 시작한다. 웹 개발자로서 사이드 프로젝트 배포하고 관리하면서, 이왕 해보는거 수익도 창출해보면 얼마나 좋을까? 여기까지 열정이 있는건 좋은데, 막상 건드리기에는 많은 시간과 노력이 필요하다. 이번 포스팅에서는 내가 겪었던 과정을 소개해보려고 한다. 1. 도메인 연결홈서버를 통해 사이트를 호스팅하기 위해서는 도메인 연결이 필수적이다. 도메인이 필요한 이유는 크게 다음과 같다.내 홈서버의 IP를 숨기기 위함홈서버와 브라우저 간 https 통신을 구축하기 위함사람들에게 더 직관적인 도메인명으로 사이트를 알릴 수 있음개발자의 입장에서는 보안적인 이슈로 인해 도메인이 필요하고, 일반적인 유저 입장에서는 사이트를 더 찾기 쉽게..

백엔드/홈서버 2026.06.06

[에이전트] Claude로 블로그도 자동화하기

최근 들어 블로그를 자주 쓰는 편인데, 항상 같은 문제에 부딪혔다. 주제는 있고 내용도 알고 있는데, 막상 글을 쓰기 시작하면 귀찮다. 그리고 Claude한테 대신 써달라고 하면 말투가 너무 정중하거나, 설명이 너무 형식적이다.결국 "Claude가 내 말투를 파악하고 알아서 쓰면 안 되나?"라는 생각으로 이어졌다.그래서 블로그도 한 번 Claude가 할 수 있게 하네싱 해보기로 했다.Claude Code의 Skills란Claude Code에는 skills라는 기능이 있다. 쉽게 말하면, 특정 작업을 어떻게 수행할지 Claude에게 미리 가르쳐두는 문서다. gstack 환경 기준으로 `~/.claude/skills/` 디렉토리 아래에 마크다운 파일로 저장하면, `/skill-name` 처럼 슬래시 커맨드로..

코딩 2026.06.05

[홈서버 구축기] 홈서버 모니터링 시스템 만들어보기

여러 프로젝트들을 직접 경험해보면서 홈서버를 자연스럽게 많이 사용하게 되었다.그러다 보면 홈서버에 자주 접속하면서 하드웨어 상황과 도커 컨테이너의 헬스 체크를 하기 어렵다. 밖에서는 PC 없이 세부적인 모니터링이 힘들고, PC로 점검을 해도 대시보드 없이는 한 눈에 하드웨어 상황을 실시간으로 알 수 없다.오픈 소스로 해결그를 위한 해결책으로 여러 서버 모니터링 프로그램들이 있다. Grafana, Zabbix 등의 여러 오픈소스 서버 모니터링 시스템들이 있지만, 역시 모니터링 계의 강자인 Grafana 또는 Zabbix를 사용할 것이다.그 전에 둘 간의 차이와 특징을 알아둘 필요가 있다. ZabbixGrafana주요 역할Full Stack 모니터링(데이터 수집, 저장, 알림, 분석)데이터 시각화, 대시보드..

백엔드/홈서버 2026.06.01

[탄소중립 아카데미 6기] API 구현 및 연동

지난 이야기이제 임베딩과 llm 응답 생성까지는 구현이 되었다. 실제 웹 화면과 연동하여 사용할 수 있는지가 중요하기 때문에.. 이번에는 웹페이지에 띄워보도록 하겠다. 웹페이지 수정하기우리 챗봇의 초기 버전이다. 팀원분께서 나름 주제와 잘 어울리는 테마로 이쁘게 만들어주셨다.이제 이 페이지를 받고 나서, 이걸 서버와 잘 연동을 해야 한다. 그 전에 코드를 뜯어서 API 스키마를 동일하게 설정하여주고, CORS 설정까지 해야 한다.{ "success": true, "error": null, "result": { "response": "...", "similarity": 0.6111, "cache_hit": true, "latency": 2000, "co2_grams": 1.36, "ci_g_pe..

탄소중립 2026.05.25