Open cso6005 opened 1 year ago
우리는 사용자가 원하는 업무, 요구사항을 중점으로 두고 ObjectOriented Programming 개발을 한다.
그러나, 개발을 하다 보면, 개발자가 사용자의 요구 사항을 구현, 또는 테스트 하기 위해서 필요한 코드가 생기게 된다.
주 업무는 아닌데, 이를 필요에 따라 또는 운영에 따라 주요 로직 사이에 끼워 넣게 되는데, 이것은 사용자는 모르는 내용이다. 즉, 요구 사항이 아니라, 개발자가 끼워둔 코드가 되는 것이다.
이렇게 사용자가 바라보는 관점이 아닌 개발자, 운영자가 보는 관점에서 필요한 코드가 있을 것이고, 이렇게 사용자 관점, 개발자 관점에 따라서 프로그램을 나눠서 만들게 되는 것이다.
이때, 사용자가 요구하는 사항 즉, 사용자 관점에서 보는 것을 코어 업무로 두고,
개발자, 운영자의 관점에서 보는 부분을 분리 또는 결합시켜서 프로그램을 만드는 것에 대한 방법론이 AOP 이다.
Primary(Core) Concern
개발자 관점 로직은 글로벌로 주 로직의 앞 또는 뒤로 들어가게 된다. 중간에 들어가는 일은 없다.
주요 프로그램 로직 방향이 위에서 아래 수직적으로 내려가는 방향이라면, Cross-cutting 수평 방향으로 잘라서 떼어내거나 붙일 수 있어야 한다.
이 로직은 주 업무 로직에 뺐다 꽂았다가 자유로워야 한다.
만약, 해당 로직이 주 로직 안에 각각 구현되어 있으면, 소스를 가지고 있는 사람만이 넣다 뺐다 할 수 있을 테고 개발부터 유지 보수 관리까지 힘들 것이다.
이를 쉽게 하기 위해서 나온 방법론이 aop이다. 즉, aop는 개발자 관점 코드가 주 로직에 직접 꽂아놓지 않고 마치 꽂아둔 것처럼 사용될 수 있도록 해주는 방법론인 것이다.
이때, 우리는 주 소스 코드가 없이 이 부가 코드를 어떻게 꽂을 수 있을까?
프락시를 쓴다면, 마치 있는 것처럼 실행 절차를 만들 수 있다.
프락시는 실제 주 업무를 호출해주는 역할을 하는데,
우리는 프락시를 호출하는 것이고. 프락시에서 호출하는 점의 앞 뒤로 원하는 부가 로직을 붙이거나, 떼면 되는 것이다.
필요하다면 앞에 부가로직을 실행하고 → 프락시를 호출해 → 얘가 주 로직 부르게 하고 → 필요하다면 뒤에 부가로직을 실행하게 하는 흐름이다.
스프링 프레임워크 Part2 AOP 강좌 내용
https://www.youtube.com/watch?v=pr2dwdf_03k&list=PLq8wAnVUcTFVUMCKI4CL_EHWW5ykPnL0z&index=3
AOP(Aspect Oriented Programming)
우리는 사용자가 원하는 업무, 요구사항을 중점으로 두고 ObjectOriented Programming 개발을 한다.
그러나, 개발을 하다 보면, 개발자가 사용자의 요구 사항을 구현, 또는 테스트 하기 위해서 필요한 코드가 생기게 된다.
주 업무는 아닌데, 이를 필요에 따라 또는 운영에 따라 주요 로직 사이에 끼워 넣게 되는데, 이것은 사용자는 모르는 내용이다. 즉, 요구 사항이 아니라, 개발자가 끼워둔 코드가 되는 것이다.
이렇게 사용자가 바라보는 관점이 아닌 개발자, 운영자가 보는 관점에서 필요한 코드가 있을 것이고, 이렇게 사용자 관점, 개발자 관점에 따라서 프로그램을 나눠서 만들게 되는 것이다.
이때, 사용자가 요구하는 사항 즉, 사용자 관점에서 보는 것을 코어 업무로 두고,
개발자, 운영자의 관점에서 보는 부분을 분리 또는 결합시켜서 프로그램을 만드는 것에 대한 방법론이 AOP 이다.
Primary(Core) Concern 과 Cross-cutting Concern
Primary(Core) Concern
개발자 관점 로직은 글로벌로 주 로직의 앞 또는 뒤로 들어가게 된다. 중간에 들어가는 일은 없다.
주요 프로그램 로직 방향이 위에서 아래 수직적으로 내려가는 방향이라면, Cross-cutting 수평 방향으로 잘라서 떼어내거나 붙일 수 있어야 한다.
이 로직은 주 업무 로직에 뺐다 꽂았다가 자유로워야 한다.
만약, 해당 로직이 주 로직 안에 각각 구현되어 있으면, 소스를 가지고 있는 사람만이 넣다 뺐다 할 수 있을 테고 개발부터 유지 보수 관리까지 힘들 것이다.
이를 쉽게 하기 위해서 나온 방법론이 aop이다. 즉, aop는 개발자 관점 코드가 주 로직에 직접 꽂아놓지 않고 마치 꽂아둔 것처럼 사용될 수 있도록 해주는 방법론인 것이다.
구현 방법
이때, 우리는 주 소스 코드가 없이 이 부가 코드를 어떻게 꽂을 수 있을까?
프락시를 쓴다면, 마치 있는 것처럼 실행 절차를 만들 수 있다.
프락시는 실제 주 업무를 호출해주는 역할을 하는데,
우리는 프락시를 호출하는 것이고. 프락시에서 호출하는 점의 앞 뒤로 원하는 부가 로직을 붙이거나, 떼면 되는 것이다.
필요하다면 앞에 부가로직을 실행하고 → 프락시를 호출해 → 얘가 주 로직 부르게 하고 → 필요하다면 뒤에 부가로직을 실행하게 하는 흐름이다.