프레임워크 적용시 고려사항
직전글 "프로젝트전에 개발 프레임워크는 꼭 준비해 두십시요" 에 이어지는 글입니다.
프레임워크는 애플리케이션 구축의 기본설계를 구성하여 제어 흐름을 통제하는 모듈이 그 실체가 될 것입니다.
자바같은 경우는 스트러츠, 스프링 등이 이에 해당한다고 말씀 드렸습니다.
그러면 사용자의 입력으로 부터 시작하여 출력을 얻게 되는 과정을 통하여 프레임워크의 기본 제어 제어 흐름을 살펴보고 장단점에 대하여 말씀드리도록 하겠습니다.
1. 어플리케이션의 동작순서는 먼저 사용자의 입력이 이루어지고 ( JSP1 )
2. 이 입력을 컨트롤부에 처리를 넘깁니다. ( Controller )
3. 컨트롤부는 설정파일 또는 데이터에 정의된 입력데이터 처리 클래스를 호출하게 되고. ( Class1 )
즉 사용자의 입력에 따라서 처리하는 클래스가 결정이 된다는 것입니다.
4. 처리 클래스의 기본 메소트가 실행이 됩니다. ( perform 또는 execute 등의 이름 )
5. 처리클래스는 다시 데이터베이스 또는 파일 IO 등을 수행하고 결과값을 컨트롤부에 넘기고, ( Controller )
6. 다시 컨트롤부가 제어를 받아서 결과를 처리할 UI프로그램을 호출합니다. ( JSP2 )
위의 처리흐름에 관여하는 프로그램을 나타내 보면 다음과 같습니다.
JSP1 -> Controller -> Class -> Controller -> JSP2
사용자 입력으로부터 최종처리까지 최소 4개의 프로그램이 관여하고 6단계의 과정을 거치게 됩니다.
위와같이 복잡한 처리 과정의 이유로 일부 개발자들이 프레임워크의 적용을 꺼리게 됩니다.
복잡해서 이해하기 어렵고 장애 발생시 디버깅이 까다롭다 등의 이유인 것이지요. 이것외에도 프레임워크 적용에는 몇가지 단점들이 있습니다.
하지만 적용에 따라 얻게 되는 장점 또한 많기 때문에 이러한 장단점을 알고 적용을 고려해 보셔야 할 것 입니다.
프레임워크 적용의 단점으로는 ,
1. 처리과정상에 반드시 프레임워크가 개입되므로 성능의 일부를 차지하게 된다.
2. 프레임워크의 개발 및 유지보수에 필요한 개발 리소스가 필요할 수 있다.
3. 개발자들이 프레임워크에 적응하는 시간이 필요하다.
4. 프레임워크 개발은 난이도가 높은 스킬을 필요로 한다.
5. 디버깅이 까다롭다.
이러한 단점을 극복하는 방법은 사전에 준비된 완성도 높은 프레임워크가 해답이라고 할 수 있다.
장점으로 본다면
1. 개발의 각 단계를 세분화하여 숙련도를 높일 수 있다.
eg) 설계자 : 비지니스 처리에 필요한 테이블 설계와 , sql 문장 작업에 집중
UI개발자 : 사용자 이벤트 처리 및 화면 작업에 집중
클래스개발자 : 비지니스 로직 구현
프레임워크개발 : 프래임워크의 성능개선 및 장애처리등의 시스템적인 유지보수
2. 일정의 예측이 가능
개발의 가장 큰 부분이 UI개발에 있으므로 일정의 critical path는 UI에서 발생한다.
UI 개발의 일정은 Class와의 간섭이 없음으로 개발해야 할 UI 화면의 갯수에 비례한는 특성을 가지게 된다. 따라서 UI화면 갯수를 변수로 하는 일정 예측 모델이 가능하다.
--> 이런 일정 예측의 장점 하나만으로도 도입을 하려는 PM 또는 관리자가 있을 것이다.
3. 개발자간의 성과 측정가능
2.에서의 이유로 개발 성과 관리가 세부적으로 가능해진다.
물론 저는 프레임워크 적용을 주장하는 쪽이기 때문에 장점에 대한 설명에 좀 더 치중을 했습니다만 , 프레임워크 적용을 꼭 해야 한다는 생각은 아닙니다. 상황에 따라서는 적용을 안하는 것이 나을 수도 있다는 것이지요.
그러나 위와 같이 모듈 형태는 아니더라도 개발 표준 규약과 같은 형태의 원시적인 프레임워크라도 꼭 사용하시기를 바랍니다.
댓글 없음:
댓글 쓰기