login register Sysop! about ME  
qrcode
    최초 작성일 :    2011년 08월 22일
  최종 수정일 :    2011년 08월 22일
  작성자 :    Taeyo
  편집자 :    Taeyo
  읽음수 :    16,222

강좌 목록으로 돌아가기

필자의 잡담~

오랜만에 장기 강좌로 기획하고 써보려 하는 강좌입니다. .NET 어플리케이션 프레임워크의 필요성을 이야기하고, 그를 사용하여 실제 애플리케이션을 작성하는 실전 강좌를 써나갈 예정입니다.

용자여. 일어나세요

바야흐로….

.NET도 완숙기에 접어들어 새 버전이 나와도 시큰둥하고, .NET 2.0(현재 버전은 4.0)과 관련한 지식을 어느 정도만 알고 있다면 웹 애플리케이션을 개발하는 데에 큰 문제는 없는 시대에 접어들었습니다(아. 이럴 줄 알았으면 ASP.NET 2.0 책까지는 쓰는 건데!). 그 사이, .NET은 4.0까지 발전했지만, 사실 새로운 내용 중 몇몇 부분을 제외하고는(심지어 몇몇 부분조차 몰라도) 웹 애플리케이션을 개발하는 데에는 크게 힘들 것이 없습니다(약간 불편한 것은 있을 수 있지만 말이죠).

그러니깐, 예를 들자면 LINQ나 WPF, WCF 같은 거 몰라도, 웹 애플리케이션 개발할 때 크게 지장을 받거나 하지 않는다는 것이죠. 주변에 그런 기술을 잘 아는 사람도 별로 없을 것이고, 실제로 프로젝트에서 그런 기술 쓰는 곳도 그리 많지 않은 편이니까요. 써드파티 컨트롤 잘 쓰고, 기본적인 서버 컨트롤들 잘 쓰면 뭐 그런대로 개발은 할 수가 있습니다..

오히려, 그 사이에 jQuery와 같은 스크립트 라이브러리가 더 많은 주목을 받았죠. 스마트 앱(App)의 세상이 도래하면서 웹앱(Web App)과 같은 기술에 관심이 늘어나게 되고, 그러면서 자연스럽게 HTML 5와 클라이언트 스크립트가 개발자 사이에서 중요한 관심사로 부각되었습니다.

하지만, 앞으로는 HTML5 그리고, 클라이언트 스크립트(javascript 등) 못지 않게 MS 개발자 사이에서는 ASP.NET이 다시금 부상하게 될 수 있다는 예상을 조심스럽게 해 봅니다. 제가 ASP.NET 커뮤니티를 운영하고 있기 때문에 그냥 막 우겨대는 것이 아니고요!! 이유는 간단합니다. HTML 5로 무엇을 만들던지 간에 말이죠. 서버와 통신을 해야만 애플리케이션이라 할 수 있을텐데 말이죠. MS 계열에서는 그와 관련한 역할을 맡고 있는 기술이 ASP.NET 기술이기 때문입니다. 단, ASP.NET 웹폼은 서버 컨트롤들이 HTML 5를 지원하기 전까지는 미래가 다소 혼탁하다는 느낌이고요. ASP.NET MVC가 추후 대세(?)가 되지 않을까 생각합니다.

즉,

  • 클라이언트 영역 : HTML 5, jQuery 등의 스크립트 라이브러리, 실버라이트
  • 클라이언트-서버 영역 : ASP.NET(MVC 포함)
  • 서버 영역 : WCF, ADO.NET, EF4, 애플리케이션 프레임워크
과 같은 구도가 되지 않을까 한다는 것입니다.

웹 개발자로서 클라이언트 영역만을 개발하는 사람은 없기에, 위의 기술들에 대해서 어느 정도는 지식을 갖추어야 한다고 봅니다. 아! 물론 WCF의 경우는 다소 특화적인 것이기에 반드시 알거나 하지 않아도 되겠죠. 필요한 시기가 오면 그때 살펴보시면 될 듯 합니다.(하지만, 개인적으로는 WCF는 가급적 필히 공부하시기를 권장합니다)

최근의 개발자 관심사는 뭐니뭐니해도 클라이언트 영역이죠? 앞으로도 꾸준히 그러할 것입니다. HTML 5가 완전하게 자리를 잡기 까진 말입니다. 하지만, 지나치게 서버 쪽에 대한 이야기가 없다는 것은 다소 걱정스럽습니다.

실버라이트로 그래피컬한 UI를 만들던, 웹폼으로 서버 컨트롤 기반의 리치 UI를 만들던, HTML 5로 표준적인 웹 페이지를 만들건 이러한 부분은 꾸준히 공부해 나가면서 준비해야 할 부분이겠죠. 하지만, 웹 개발자라면 클라이언트 영역에 관심을 갖는 것만큼이나 서버 영역에도 많은 관심을 가지셔야 합니다. 실제로 수많은 프로젝트에서 중요하게 다뤄지는 핵심 영역은 역시나 아직까지도 서버 측에 있다는 사실을 기억하셔야 합니다.

UI가 무엇이던 상관없이 그 UI와 데이터를 교환하고 통신하기 위한 서버 모듈은 항상 필요합니다. 팥이 없는 팥빙수는 아무 맛이 없듯이, 서버 없는 클라이언트 또한 아무 의미가 없기 때문입니다. 서버 모듈은 성능 및 보안 그리고 안정성이 무엇보다 중요하게 고려되어야 하기 때문에, 가볍게 바꾸거나 변경하기가 쉽지 않은 편입니다. 다만, 한번 잘 설계해서 만들어 놓으면 3대가 편할 수도 있는 것이 또한 서버 모듈들이기도 하죠(응? 뻥이 너무 쎘나!)

그래서 하고 싶은 말.

당신의 서버 모듈에 만족하십니까?

대부분 '뭐 그런대로요' 라고 대답하실 듯 합니다. 물론, 잘 운영되고 있다면 큰 문제는 없겠죠. "빵"하고 보안문제라도 "쿠쿠쿵" 터지지 않는다면 말이죠. 하지만, 우리는 계속 업데이트를 해야 하며, 새로운 기능을 추가해야 하고, 혹은 새로운 프로젝트를 수행해야 합니다. 직원은 꾸준히 입사하고, 퇴사하고, 승진하고 부서 이동을 합니다. 그리고, 기존에 구축되어 있는 시스템에는 기존에 수많은 개발자들이 수많은 자기만의 스타일로 작성해 둔 수많은 코드들이 묻혀있습니다.

그리고, 그 코드는 그 누구도 함부로 건들고 싶지 않아합니다. 기존 개발자가 워낙 성심성의 껏 만들어 두어서 그 코드를 존중하고 신뢰하기 때문에는 개뿔 괜히 건드렸다가 뭔가 두둥! 하고 문제가 생기면 건드린 사람의 입장만 난감해지기 때문입니다.("네가 건드렸어? 그럼 그건 네가 해")

심지어는 자신이 예전에 작성해 놓은 코드를 보고 '이거 도대체 누가 짜 놓은거야? 진짜 어이없네!'라고 짜증내다가 그게 본인임을 깨닫고 표정관리를 하는 자신을 느껴본 적도 있을 것입니다

어느 곳이나 개발할 경우에는 개발 표준이라는 것이 있고, 코딩 가이드, 코딩 패턴 뭐 임마 그게 뭐야 싸울래 하는 소중한 문서들이 존재하겠지만, 대부분 아무도 보지 않는 편입니다. 설령 꿈속에서나마 그들을 읽는다 하더라도, 그러한 표준들이 지켜지는 시기는 사실상 개발 초기를 제외하고는 거의 없는 편이죠.

그래서, 언젠가부터 리더급 개발자들은 개발 프레임워크라는 것의 도입을 신중하게 고민하기 시작했습니다.

'이거 뭐. 시간이 지나고 나니깐 몽땅 다 개판이네. 뭔가 개발 표준이 필요해. 공통 라이브러리도 필요하고, 명명 규칙도 정해야 할 것 같아. 이래서 인수인계나 제대로 되겠어? 다들 제 멋대로구만. 뭐야~ 이 메서드는 뭔데 모든 클래스에 다 들어 있는거야!! 안되겠어. 사내 표준이 될만한 개발 프레임워크를 발굴 혹은 개발해서 적용하는 것이 좋겠어"

그리곤, 그렇게 몇 달에 걸쳐 개발 프레임워크를 제작하거나 이미 공개된 프레임워크들을 검토하여 업무에 적용하곤 합니다. 그리고, 분명 어떤 형태로든지 간에 효과를 보고 만족스러워 합니다.

그래서, 한동안은 개발 프레임워크의 열풍이 불었던 시기가 있었습니다. 오픈 소스 쪽이 그러했듯이 .NET 쪽에서도 그러한 열풍을 타고 다양한 오픈 소스 프레임워크들을 가져다 쓰기 시작한 것이죠. 대부분의 프레임워크들이 오픈 소스의 닷넷 버전이었기에 다소 효율성이 떨어진다는 의견도 상당했지만 말입니다. 그러다 보니, 여러 개의 프레임워크를 혼합해서 사용해야 하는 경우도 생기고, 그에 따라 설정 파일의 복잡한 설정이 발목을 잡는 일도 생기곤 했습니다.

굳이, .NET에서는 DI니 IoC니 하는 것이 꼭 필요한 패턴은 아님에도, 오픈 소스 쪽에서 자주 언급되고 관련 라이브러리가 유명세를 타다 보니, .NET에서도 그것을 사용해야만 뭔가 그럴듯한 제품이 된 것인 양 뿌듯해 하기도 했습니다. 그러다 보니, .NET 웹 애플리케이션이 오픈 소스의 웹 애플리케이션과 유사한 구조가 되기도 했죠. (에이~ 그건 아니죠~)

심지어, 작은 게시판을 하나 만들어도 복잡한 프레임워크에 의존하게 되는 일이 생겨서 초급 개발자들은 오히려 더 혼란스럽게 느끼기도 했죠. 그러다 보니, 딱 필요한 기능만을 제공하는 컴팩트한 프레임워크를 갈구하는 마음이 생기기도 했습니다. 기존에 이것 저것 여러 프레임워크를 섞어 쓸 수 밖에 없던 것을 단 하나의 프레임워크로 해결할 수 있으면 좋겠다는 그런 생각을 말이죠.

그런 질풍노도의 시기를 거쳐, 현재에 이르렀습니다. 그 사이에 많은 프레임워크들이 등장했다 사라지고 도태되고 새로 떠오르고 해서, 어느 정도 정리가 되었다고 말할 수도 있긴 합니다만, 사실 현재도 말끔한 상태라고 보기에는 무리가 좀 있습니다.

하지만, 적어도 이젠 "완성도 있는 개발을 위해서는 적절한 개발 프레임워크를 적용하는 것이 도움이 확실히 된다"는 생각은 공통적으로 인지하는 세상이 되었죠. 관건은 어떤 개발 프레임워크가 자신의 개발에 도움이 되느냐를 검토하는 것입니다. 어찌 보면, 쉽지 않은 검토이죠.

그래서, 이 강좌를 준비햇습니다!

  • 개발 프레임워크란 것은 도대체 무엇인가?
  • 개발 프레임워크를 도입하면 얻을 수 있는 효과는 무엇인가?
  • 반면, 단점은 없는가? 그렇다면 그 문제점은 무엇인가?
  • 그래서, 쓸만한 개발 프레임워크에는 무엇이 있는가?
  • 개발 프레임워크를 써서 개발은 어떻게 해야 하는가?
바로 이러한 주제로 강좌를 이끌어 가볼까 합니다.

특별히 이번 강좌는 드원 테크놀로지의 유경상 수석과 병행 강좌로 진행할 예정입니다. 기대해 주세요!


authored by

  itist
  2011-08-24(10:28)
캐릭 이미지
감사합니다~
  heykiss
  2011-08-24(16:01)
캐릭 이미지
참 글이 쫀득쫀득 합니다. 강좌 많이 좀 올려주세용..ㅋㅋㅋ
  goni0607
  2011-09-22(18:07)
캐릭 이미지
방대한 범위의 강좌가 시작되는군요~
힘내시고 좋은 강좌 부탁드립니다~
감사합니다~ 꾸뻑~

  eloi
  2012-01-05(15:57)
캐릭 이미지
지금이라도 ASP.NET 2.0 책을 써보심이~^^;

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})