개발툴

실무에서 자주 사용하는 개발 도구를 카테고리별로 정리했습니다.

이 사이트 도구

HTML 업로드 → axe-core 접근성 · Rule Engine SEO/구조 · 자동 수정 unified diff · PR 본문 마크다운.

HTML 감사 열기 →한국형 Design MD (Bootstrap/Tailwind) →

AI Coding Tools

코드 초안 생성, 리팩터링, 문서화 자동화에 활용하는 도구

AI Coding Tools 필수 키/환경변수
  • OpenAI API: OPENAI_API_KEY
  • Anthropic API: ANTHROPIC_API_KEY
  • Google Gemini API: GOOGLE_API_KEY 또는 GEMINI_API_KEY
  • Azure OpenAI: AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY
  • AWS Bedrock: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION
  • Sentry 연동 시: SENTRY_DSN (에러 추적)

Frontend & Runtime

프론트엔드 개발 및 런타임 구성

Collaboration & Quality

코드 품질, 협업, 표준화에 사용하는 도구

DevOps & Platform

배포 자동화, 모노레포, 운영 안정화 도구

Database Tools

DB 모델링, 조회, 운영 모니터링에 사용하는 도구

Server-side & API

백엔드 API 개발, 서버 운영, 관측성 확보를 위한 도구

서버 운영 체크리스트
  • 헬스체크(`/health`, `/ready`)와 외부 모니터링 연동을 구성합니다.
  • 구조화 로그(JSON)와 요청 단위 trace id를 적용해 장애 추적성을 높입니다.
  • 인증/권한, 레이트리밋, CORS, 입력 검증 등 API 보안 기본 정책을 표준화합니다.
  • 타임아웃/재시도/서킷브레이커를 적용해 외부 의존 장애 전파를 차단합니다.
  • 배포 전후 체크리스트(마이그레이션, 캐시, 롤백 경로)를 문서화합니다.
  • SLO/에러버짓 기반으로 알림 임계치와 온콜 대응 플로우를 정의합니다.
Node.js/Express 템플릿
// Express production template (ops-ready)
import express from "express";
import helmet from "helmet";
import rateLimit from "express-rate-limit";
import pino from "pino";
import * as Sentry from "@sentry/node";
import { NodeSDK } from "@opentelemetry/sdk-node";
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";

const app = express();
const logger = pino();
const otel = new NodeSDK({ instrumentations: [getNodeAutoInstrumentations()] });
otel.start();

Sentry.init({ dsn: process.env.SENTRY_DSN });

app.use(helmet());
app.use(rateLimit({ windowMs: 60 * 1000, max: 120 }));
app.use(Sentry.Handlers.requestHandler());
app.use(express.json({ limit: "1mb" }));

app.get("/health", (_req, res) => res.status(200).json({ ok: true }));

app.use((req, _res, next) => {
  req.headers["x-trace-id"] ||= crypto.randomUUID();
  next();
});

app.use(Sentry.Handlers.errorHandler());

app.listen(3000, () => logger.info("server started"));
NestJS 템플릿
// NestJS production template
import { ValidationPipe } from "@nestjs/common";
import { NestFactory } from "@nestjs/core";
import helmet from "helmet";
import { WinstonModule } from "nest-winston";
import * as winston from "winston";
import * as Sentry from "@sentry/node";
import { AppModule } from "./app.module";

async function bootstrap() {
  Sentry.init({ dsn: process.env.SENTRY_DSN });

  const app = await NestFactory.create(
    AppModule,
    WinstonModule.createLogger({
      transports: [new winston.transports.Console()],
    }),
  );
  app.use(helmet());
  app.useGlobalPipes(new ValidationPipe({ whitelist: true }));
  app.enableShutdownHooks();
  await app.listen(3000);
}
bootstrap();

Text-to-SQL

자연어 질문을 SQL로 변환해 분석/조회 속도를 높이는 도구

Text-to-SQL 보안 가이드
  • DB 계정은 읽기 전용(SELECT) 권한으로 분리하고 쓰기 권한은 기본 차단합니다.
  • 허용된 스키마/테이블만 조회하도록 화이트리스트를 적용합니다.
  • 실행 전 SQL 검증 단계를 두고 DROP/DELETE/UPDATE 같은 위험 쿼리를 차단합니다.
  • 결과 행 수, 실행 시간, 비용 상한(limit/timeout)을 설정해 과도한 조회를 방지합니다.
  • 민감 컬럼(PII)은 마스킹/비식별화 후 응답하도록 정책을 적용합니다.
  • 프롬프트/쿼리/실행 로그를 저장해 감사 추적과 오탐 분석에 활용합니다.