핵심 인사이트 (3줄 요약)
- 본질: 안티 패턴 (Anti-Patterns)은 반복해서 등장하지만 장기적으로 비용과 결함을 키우는 나쁜 설계 해법의 유형이다.
- 가치: 구조 부채를 빨리 발견해 장애와 유지보수 비용을 줄이게 한다.
- 판단 포인트: 안티 패턴 답안은 정의보다 증상·원인·개선 방향을 함께 써야 실무 판단력이 드러난다.
Ⅰ. 개요 및 필요성
안티 패턴 (Anti-Patterns)은 반복해서 등장하지만 장기적으로 비용과 결함을 키우는 나쁜 설계 해법의 유형이다. 초기에는 빠른 우회처럼 보이지만 시간이 지날수록 변경 비용과 이해 비용을 폭증시키는 코드 냄새가 누적된다. 이 개념이 필요한 이유는 나쁜 반복 해법을 조기에 식별하고 끊는 일을 시스템 수준의 규칙으로 끌어올리기 위해서다. 반대로 이를 무시하면 스파게티 코드, 갓 클래스, 피처 엔비처럼 책임과 데이터 소유권이 무너져 장애 대응이 어려워진다.
아래 그림은 왜 이 주제가 “문제 인식 → 설계 규칙 → 안정화 결과”의 흐름으로 이해되어야 하는지를 압축한다.
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Growth │──▶│ Smell │──▶│ Risk │
└────────────┘ └────────────┘ └────────────┘
이 흐름의 핵심은 기능 하나를 설명하는 것이 아니라, 어떤 압력이 들어와도 구조가 흔들리지 않게 만드는 기준을 세우는 데 있다.
- 📢 섹션 요약 비유: 정리되지 않은 창고처럼, 처음엔 빨라 보여도 시간이 갈수록 찾는 비용이 더 커진다.
Ⅱ. 아키텍처 및 핵심 원리
안티 패턴 (Anti-Patterns)의 핵심 원리는 "나쁜 반복 해법을 조기에 식별하고 끊는 일"을 구현 규칙으로 고정하는 데 있다. 실제 설계에서는 스파게티 코드는 흐름 엉킴, 갓 클래스는 책임 집중, 피처 엔비는 타 객체 데이터 집착이라는 관점으로 진단한다. 동시에 문제 징후를 모두 한 번에 없애려 하면 리팩터링 범위가 과도해질 수 있어 우선순위가 필요하다.
| 항목 | 설명 | 포인트 |
|---|---|---|
| 핵심 문제 | 나쁜 반복 해법을 조기에 식별하고 끊는 일 | 이 축이 흔들리면 설계 목적이 사라진다 |
| 구현 방식 | 스파게티 코드는 흐름 엉킴, 갓 클래스는 책임 집중, 피처 엔비는 타 객체 데이터 집착이라는 관점으로 진단한다 | 코드·계층·배포 단위에 일관되게 반영해야 한다 |
| 트레이드오프 | 문제 징후를 모두 한 번에 없애려 하면 리팩터링 범위가 과도해질 수 있어 우선순위가 필요하다 | 복잡도와 운영 비용을 함께 관리해야 한다 |
다음 그림은 입력, 경계, 핵심 규칙, 결과가 어디서 갈리는지 보여 준다.
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Module │──▶│ Smell │──▶│ Couple │──▶│ Fail │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
이때 중요한 것은 도구 이름보다 경계와 책임의 방향이다. 동일한 기술을 써도 이 방향이 다르면 유지보수성, 테스트성, 운영 난도가 크게 달라진다.
- 📢 섹션 요약 비유: 엉킨 전선처럼, 어디를 손대도 다른 곳이 함께 흔들리는 구조가 된다.
Ⅲ. 비교 및 연결
기술사 답안에서는 안티 패턴 (Anti-Patterns)을 단독 정의보다 대안 구조와 함께 써야 경계가 살아난다. 여기서는 개선된 구조 와 안티 패턴 지속 구조 를 대비해 핵심 차이를 정리한다.
| 비교 축 | A | B |
|---|---|---|
| 변경 대응 | 개선된 구조는 나쁜 반복 해법을 조기에 식별하고 끊는 일에 맞춰 영향 범위를 줄인다 | 안티 패턴 지속 구조는 변경이 주변 모듈로 번지기 쉽다 |
| 구조 안정성 | 개선된 구조는 스파게티 코드는 흐름 엉킴, 갓 클래스는 책임 집중, 피처 엔비는 타 객체 데이터 집착이라는 관점으로 진단한다 | 안티 패턴 지속 구조는 책임과 의존이 섞여 규칙이 흐려진다 |
| 운영 결과 | 개선된 구조는 구조 부채를 빨리 발견해 장애와 유지보수 비용을 줄이게 한다 | 안티 패턴 지속 구조는 스파게티 코드, 갓 클래스, 피처 엔비처럼 책임과 데이터 소유권이 무너져 장애 대응이 어려워진다 |
연결 개념으로는 스파게티 코드, 갓 클래스 같은 주변 주제를 함께 써 주면, 단순 암기보다 적용 맥락이 살아난다.
- 📢 섹션 요약 비유: 정리된 회로와 뒤엉킨 배선을 비교해야 나쁜 반복 해법의 위험이 보인다.
Ⅳ. 실무 적용 및 기술사 판단
실무에서는 안티 패턴 (Anti-Patterns)을 무조건 채택하기보다 안티 패턴 답안은 정의보다 증상·원인·개선 방향을 함께 써야 실무 판단력이 드러난다. 아래 체크리스트는 설계 감리 시 최소한으로 확인해야 할 질문이다.
판단 체크리스트
- 변경이 특정 클래스나 모듈에 과도하게 몰리지 않는가?
- 데이터와 행동의 소유권이 뒤섞여 있지 않은가?
- 임시 우회 코드가 영구 구조로 굳어지지 않았는가?
- 리팩터링 우선순위를 장애·변경 빈도 기준으로 정했는가?
답안을 마무리할 때는 “어디에 쓰는가”만이 아니라 “언제 과한가”를 함께 적어야 한다. 그래야 설계 원칙, 패턴, 아키텍처가 구호가 아니라 의사결정 기준으로 읽힌다.
- 📢 섹션 요약 비유: 위험물 점검표처럼 냄새를 조기에 감지해야 대형 장애를 막을 수 있다.
Ⅴ. 기대효과 및 결론
안티 패턴 (Anti-Patterns)의 기대효과는 분명하다. 구조 부채를 빨리 발견해 장애와 유지보수 비용을 줄이게 한다. 다만 문제 징후를 모두 한 번에 없애려 하면 리팩터링 범위가 과도해질 수 있어 우선순위가 필요하다. 결국 기억할 관점은 나쁜 반복 해법을 조기에 식별하고 끊는 일을 구조 규칙으로 만드는 데 있다는 점이다.
- 📢 섹션 요약 비유: 재발 방지 메모처럼, 안티 패턴은 이름을 외우는 것이 아니라 끊는 기준을 남기는 데 의미가 있다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| 스파게티 코드 | 안티 패턴 (Anti-Patterns)을 설계하고 감리할 때 함께 보는 연관 개념 |
| 갓 클래스 | 안티 패턴 (Anti-Patterns)을 설계하고 감리할 때 함께 보는 연관 개념 |
| 피처 엔비 | 안티 패턴 (Anti-Patterns)을 설계하고 감리할 때 함께 보는 연관 개념 |
| 리팩터링 | 안티 패턴 (Anti-Patterns)을 설계하고 감리할 때 함께 보는 연관 개념 |
📈 관련 키워드 및 발전 흐름도
[임시 우회 누적] → [안티 패턴 인식] → [점진적 구조 개선]
👶 어린이를 위한 3줄 비유 설명
- 안티 패턴 (Anti-Patterns)은 책상 위에 물건을 아무 데나 쌓아 두다가 찾을 수 없게 되는 것처럼 약속을 먼저 정하는 거예요.
- 그러면 서로 다른 사람이 해도 같은 규칙으로 움직일 수 있어요.
- 그래서 규모가 커질수록 나쁜 반복 해법을 조기에 식별하고 끊는 일이 더 중요해져요.