TECH 으로 돌아가기
TECH HACKER NEWS 오늘 5분 읽기 29 READS

관점 지향 프로그래밍(AOP)이 돌아온다? 옛날 기술이 다시 주목받는 이유

똑같은 코드를 함수마다 복붙하고 있다면

코드를 짜다 이런 경험 있으세요? 함수마다 맨 앞에 로그 찍는 코드, 권한 확인하는 코드, 실행 시간 재는 코드를 똑같이 복붙하고 있는 자신을 발견하는 거요. 핵심 로직은 두세 줄인데 그 주변을 감싸는 부가 코드가 더 많을 때요. 이렇게 '여기저기 흩어지는 공통 기능'을 깔끔하게 떼어내자는 아이디어가 바로 관점 지향 프로그래밍(AOP, Aspect Oriented Programming)이에요. 2000년대 초반에 엄청 뜨거웠다가 한동안 잠잠해졌는데, 최근 다시 주목받고 있다는 이야기가 나와요.

AOP가 정확히 뭔가요

로깅, 보안 검사, 트랜잭션 관리, 캐싱 같은 기능은 특정 한 모듈에만 있는 게 아니라 거의 모든 모듈을 가로질러 등장하거든요. 이런 걸 '횡단 관심사(cross-cutting concern)'라고 불러요. 코드를 가로로 쭉 가로지른다는 뜻이에요. 문제는 이게 코드 전체에 흩어지면서(scattering) 정작 비즈니스 로직과 뒤엉켜버린다(tangling)는 거예요.

AOP는 이걸 '관점(aspect)'이라는 별도 단위로 분리해요. 용어를 풀어보면:

자바의 AspectJ나 스프링 AOP가 대표적이고, .NET 진영엔 PostSharp가 있었어요. 스프링에서 @Transactional 어노테이션 하나 붙이면 트랜잭션이 알아서 시작되고 커밋되는 그 '마법', 사실 그게 AOP거든요.

그런데 왜 인기가 식었을까

AOP는 '코드에 안 보이게 끼어드는' 특성 때문에 디버깅이 어려웠어요. 분명 내 메서드엔 그런 코드가 없는데 갑자기 로그가 찍히고 동작이 바뀌니, 신입이 보면 "이게 대체 어디서 실행되는 거야" 하고 멘붕이 오는 거죠. 과하게 쓰면 코드 흐름을 따라가기가 정말 힘들어져요. 그래서 한동안 "마법은 위험하다"는 분위기에 밀려 조용해졌어요.

그런데 요즘 다시 돌아오는 이유

흥미롭게도 AOP의 정신이 곳곳에서 부활하고 있어요. 대표 주자가 관측성(observability) 분야예요. OpenTelemetry 같은 도구는 코드를 거의 안 건드리고도 함수 호출마다 자동으로 추적 정보를 심어주거든요. 이게 바로 AOP가 꿈꾸던 '핵심 코드는 그대로, 부가 기능은 끼워넣기'예요. eBPF는 한술 더 떠서 리눅스 커널 레벨에서 애플리케이션을 안 고치고도 동작을 관찰하고 가로채요. 서비스 메시(사이드카 프록시)도 네트워크 통신에 보안·재시도·모니터링을 코드 밖에서 끼워넣는다는 점에서 AOP의 분산 버전이라 볼 수 있고요. 파이썬 데코레이터, 자바스크립트 미들웨어도 결국 같은 발상이에요.

한국 개발자에게

스프링을 쓰는 분이라면 사실 이미 매일 AOP를 쓰고 있는 셈이에요. @Transactional, @Cacheable, 로깅 인터셉터 전부 AOP죠. 다만 직접 커스텀 어드바이스를 남발하기보다, OpenTelemetry 자동 계측이나 검증된 어노테이션 위주로 쓰는 게 안전해요. "흩어지는 공통 코드가 보이면 관점으로 뗄 수 있을까?"라는 시각을 갖는 것만으로도 설계가 훨씬 깔끔해지거든요.

마무리

정리하면, AOP는 사라진 게 아니라 관측성과 인프라 레벨로 모습을 바꿔 돌아오고 있어요. 여러분 코드에서 가장 지겹게 반복되는 '부가 코드'는 뭔가요? 그걸 관점으로 떼어낸다면 핵심 로직이 얼마나 깔끔해질까요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://thomaswc.com/blog/the_return_of_aop.html
SHARE
처리 중...