본문 바로가기

전체보기

(3) TDD의 소개 - 예제로 살펴보는 TDD 개발 프로세스 TDD 개발 프로세스 먼저 아래와 같은 프로그램을 작성한다고 가정하겠다. 1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL”를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오. 위의 프로그램을 Console에 작성한다고 가정할 때 먼저 지금까지 개발해온 개발 방법론으로 접근해보도록 하겠다. 아마도 80% 이상의 개발자들은 아마 아래와 같은 코드를 작성할 것이다. static void Main(string[] args) { for (int i =1 ; i 더보기
(2) TDD의 소개 - 통합테스트와 유닛테스트 먼저 TDD에서 도입하는 유닛 테스트를 이해하기 위해서 기존의 테스트 프로세스를 먼저 살펴볼 필요가 있다. 대부분의 프로젝트에서는 통합 테스트(Integration Test)를 통하여 소프트웨어를 테스트하고 진단하게 된다. 먼저, 우리가 운전하고 있는 자동차가 어떤 문제가 생기면 어떻게 될까? 혼자서 문제를 진단하고 알아 내는 것이 과연 가능할까? 자동차의 엔진들은 보통 많은 부품들과 함께 작동되기 때문에 어떤 것들이 어떻게 연결되어 있는지 알아야만 진단이 가능하다. 아쉽게도 소프트웨어도 자동차의 엔진과 굉장히 비슷하다. 많은 엔진들과 기능들이 서로 모듈 별로 연결되어 있기 때문에 어떤 한 모듈이라도 제대로 동작되지 않으면 전체 기능이 동작되지 않게 되는 경우가 많다. 아래 [그림3]의 여러 층으로 설계.. 더보기
(1) TDD의 소개 - TDD의 장단점 TDD(Test-Driven Development)는 현재 소프트웨어를 개발하는데 있어서 전세계적으로 가장 즐겨 사용하는 개발 방법론으로 자리잡고 있다. 미국의 한 리서치 기관에서 조사한 결과에 따르면 소프트웨어 회사에서 약 77.5% 이상이 TDD 개발방법론을 선호하고 적용하고 있다고 이야기 하고 있다. 이에 비추어 볼 때 아직 국내에서는 도입이 많이 늦기는 했지만 세계적인 데이터를 통틀어 볼 때 보다 높은 퀄리티의 소프트웨어를 만드는데 있어서 필수적인 과정이 분명하다. 국내에서는 소프트웨어의 테스트라는 것은 일반적으로 어느 정도 규모 있는 소프트웨어 회사들에 한해서만 QA팀이 존재하고 있고 그 팀을 통하여 테스트를 진행해 왔었기 때문에 TDD를 단순히 QA를 위한 혹은 유닛 테스팅 방법론으로 오해할 .. 더보기
웹 사이트의 오해와 진실 그리고 튜닝 2009년 1월호로 월간 마이크로소프트웨어에 기고한 기사입니다. 기존의 웹 사이트 성능 튜닝 강좌와 중복되는 내용도 있습니다. PDF & XPS문서: 웹사이트 오해와 진실.zip 두말하면 잔소리겠지만 웹 사이트의 성능을 높이는 일은 굉장히 중요하다. 사용자가 해당 서비스를 판단하는 가장 중요한 잣대도 바로 사이트의 성능이다. 하지만 우리는 웹 사이트 성능에 대한 많은 오해를 가지고 있다. 때문에 이번 강좌에서는 그 오해와 그 뒤에 숨이었던 진실은 무엇인지 살펴볼 것이고, 웹 사이트 튜닝을 위한 몇 가지 지침 또한 소개하도록 하겠다. 사이트는 왜 느려지는 걸까? 가끔 필자에게 닷넷 프로젝트 성능 튜닝에 대한 요청이 들어오곤 한다. 그 요청 내용의 대부분은 DB는 이상이 없고 프로그램 로직도 크게 문제가 없.. 더보기
넥슨 사이트의 성능튜닝 - #5 캐시활용의 효과 안녕하세요~ 암암리에 넥슨의 뒤를 캐고 있는 튜닝요원 HOONS입니다. 원래 ETag에 대한 포스트를 쓰려고 했지만 한 초등학교 선생님의 제보가 도착해서 그 사건을 한번 분석해 보려합니다. 제보받은 내용 어느 초등학교 선생님으로부터 전달된 제보입니다. 사건 분석은 넥슨 사이트가 빨라졌다는 담긴 한 초딩의 일기로부터 시작합니다. 아니 넥슨이 어떻게 변했길래 사이트가 빨라졌다고 생각하는 걸까요?! 그래서 넥슨 사이트를 조사해 보았습니다. [MAX-AGE를 적용한 이미지] 넥슨의 성능을 높이는 방법중에 캐시를 활용해야 한다는 내용을 먼저 포스트 했었습니다. (넥슨 사이트의 성능튜닝 - #2 캐시의 활용) 3주전만 하더라도 넥슨은 캐시를 활용하지 않고 있었지만 언제부터인가 넥슨은 Cache-Control의 ma.. 더보기
넥슨 사이트의 성능튜닝 - #4 Gzip 압축의 적용 안녕하세요~ 암암리에 넥슨의 뒤를 캐고 있는 튜닝요원 HOONS입니다. 이전 포스트에서는(넥슨 사이트의 성능 튜닝 – #3 HTTP 요청 줄이기) HTTP 요청 수를 최소화하여 처음 사이트에 방문 했을 때 속도를 올리는 방법들에 대해서 살펴 보았습니다. 지난 번 포스트에서 강조한 부분은 바로 HTTP 요청을 줄이는 것이었습니다. 페이지의 UI를 조금만 수정해서 HTTP 요청을 줄인다면 분명 엄청난 성능 향상을 가져올 수 있을 것입니다. 몰라서 안 했다면 이제는 귀찮음과 싸워야 할 때입니다.(-_-;) 보안 또한 귀찮음과 비례합니다. 보안을 강화할수록 사용자는 불편함을 느끼게 됩니다. 비스타의 UAC가 그 대표적인 예가 되지요. 하지만 성능은 웹 사이트 개발자가 귀찮아질수록 사용자는 편해집니다. 때문에 그.. 더보기
넥슨 사이트의 성능튜닝 - #3 HTTP 요청 줄이기 안녕하세요~ 암암리에 넥슨의 뒤를 캐고 있는 튜닝요원 HOONS입니다. 이전 포스트(넥슨 사이트의 성능 튜닝 – #2 캐시의 활용)에서는 사용자가 재방문하게 되었을 때 성능을 2배 이상 올릴 수 있는 방법에 대해서 살펴 보았습니다. 사용자의 재방문 비율이 높을 거라 예상되는 넥슨에서는 반드시 적용해야할 부분이라고 생각합니다. 참고로 이 포스트는 연계성이 있기 때문에 앞에서부터(웹사이트 성능을 결정하는 요소들) 차례대로 보아야 쉽게 이해할 수 있을 것입니다. 오늘은 재방문이 아닌 처음 방문할 때의 성능을 올리기 위한 방법을 살펴보고자 합니다. 다시 한번 강조하는 것은 이번 넥슨 사이트 관련 포스트는 UI 단의 성능 올리기 위한 수사를 진행하고 있는 것입니다. 넥슨 사이트의 경우 HTTP 요청이 150번 이.. 더보기
넥슨 사이트의 성능튜닝 - #2 캐시의 활용 안녕하세요~ 암암리에 넥슨의 뒤를 캐고 있는 튜닝요원. HOONS입니다. 이전 포스트(넥슨 사이트의 성능 튜닝 – #1 성능 분석에 앞서서)에서는 브라우저가 동작되는 기본적인 내용과 HTTP 요청과 응답에 대한 내용을 다루어 보았습니다. 그럼 이제 하나 둘씩 넥슨 사이트를 튜닝할 수 있는 기술의 실마리를 풀어 보도록 하겠습니다. 단, 넥슨을 통해서 살펴볼 부분은 UI단(Frontend)의 기술을 튜닝하는 것입니다. 때문에 메모리 부하로 웹 서버가 죽거나 하는 문제는 UI단의 기술과는 상관 없는 부분인 것입니다. (해깔리지 말라는 의미로 ^^) 서버 단의 튜닝기술은 넥슨에 대한 포스트를 끝낸 후에 이어서 진행하도록 하겠습니다. 맨 처음 포스트에서도 다루었듯이 사이트의 성능에 문제가 있다고 판단되는 경우 그.. 더보기
넥슨 사이트의 성능튜닝 - #1 성능 분석에 앞서서 안녕하세요~ 이번에 새롭게 튜닝요원으로 활동하게 된 HOONS입니다.성능에 관한 내용들을 어떤 방식으로 진행해야 보다 재미있고 흥미롭게 다룰 수 있을지 많은 고민을 했습니다. 고민 중에 선택한 방법이 국내의 사이트를 실례로 사이트를 직접 분석해보면 보다 재밌게 내용을 다룰 수 있다는 생각이 들어서 제목을 굉장히 건방지게 잡아 보았습니다.(-_-;) 여기서 국내 사이트를 하나 선정하고 그 사이트에서 성능을 개선할 수 있는 요소들을 찾아볼 것입니다. 그리고 왜 적용해야 하고 어떻게 적용해야 하는지에 대한 내용을 살펴볼 것입니다. 이번에 다루는 내용이 서버단이 아닌 UI 단의 튜닝이기 때문에 서버 단의 언어는 무관합니다. 하지만 필자가 닷넷에 각별한 애정을 가지고 있기 때문에 넥슨(http://www.nexo.. 더보기
웹사이트 성능을 결정하는 요소들 두말하면 잔소리겠지만 웹 사이트의 성능을 높이는 일은 굉장히 중요합니다. 사용자가 해당 서비스를 판단하는 가장 중요한 잣대도 바로 사이트의 성능입니다. 하지만 성능과 질을 우선시 하기 보다는 결과를 만들어 내기 급급한 국내 IT환경에서는 최적화된 성능을 기대하기는 어려울 것입니다. 때문에 산출물이 나왔지만 성능이 나오지 않아 여러 전문가에게 자문을 구하며 급급히 수습하려는 일도 일상다반사입니다. 여러 전문가에게 자문을 구해는 보지만 사이트에서 무엇이 문제인지 정확하게 진단할 수 있는 전문가 또한 많지 않다는 것도 문제인 것이죠. 그래서 앞으로의 포스트에서는 HOONS가 그 동안 경험하고 연구한 성능에 관한 미약한 지식을 공유할 예정입니다. 성능을 진단하는 방법에서부터 여러 가지 관점(서버단, UI단)으로.. 더보기
REST의 개념과 REST서비스의 구현 이번에는 2006년도부터 새롭게 부상해 온 REST 웹 서비스가 무엇인지 또한 WCF에서는 어떻게 구현할 수 있는지 살펴보도록 하겠습니다. 웹 서비스의 새로운 패러다임 REST(Representational State Transfer) 2006년부터 크게 이슈가 된 기술이 바로 REST라는 방식의 웹 서비스 입니다. REST는 웹 2.0의 패러다임으로 등장했던 Open API 보다 간단하게 제공하기 위해서 사용되었던 방식입니다. REST는 2000년도에 외국의 어떤 박사의 학위 논문에서 처음으로 제안되었습니다. 그 당시는 대규모의 네트워크 시스템을 위한 방법이라는 뜻으로 발표한 것이었지만 최근 이용되고 있는 REST는 HTTP와 XML을 이용하여 데이터를 주고 받는 웹 서비스를 이용하는 것으로 쓰이고 있.. 더보기
ASP.NET Ajax와 WCF와의 연동 JSON vs SOAP 닷넷 3.5에서 WCF는 JSON 데이터 타입을 지원하게 되었습니다. 때문에 실버라이트, ASP.NET Ajax와 같은 클라이언트 작업에서 WCF와 보다 유연하게 연동할 수 있게 된 것입니다. 쉽게 말하자면 ASP.NET Ajax를 개발할 때 스크립트 몇 줄만으로 WCF 서비스를 호출할 수 있습니다. 실버라이트의 경우 SOAP과 JSON, REST, POX, RSS 등의 다양한 네트워크 자원을 지원하고 있습니다. 때문에 WCF가 JSON을 지원하지 않는다 하더라도 실버라이트와 WCF는 SOAP을 통해 데이터를 교환할 수 있을 것입니다. [실버라이트에서 지원하는 네트워크 자원] 그럼 실버라이트에서는 WCF에서 지원하는 JSON이 별다른 의미가 없는 것일까요? 그렇지 않습니다. JSO.. 더보기
(7) 실전 #2 - WCF Service & Client 구현하기 본 강좌는 월간 마이크로소프트웨어에 기고한 기사입니다. Service 구현하기먼저 새로운 프로젝트를 선택하고, 콘솔 응용 프로그램을 선택한다. 그 후에 System.ServiceModel 이라는 네임스페이스를 선택해서 추가한다. 네임스페이스를 참조 했다면 다음에 새로운 ChatService 라는 클래스를 추가하도록 하자. ChatService라는 클래스가 추가가 되었다면 그럼 먼저 클라이언트에서 서버로 보내고 서버에서 클라이언트로 콜백할 서비스 인터페이스를 정의해 보도록 하겠다.---------------------------------------------------------- #region 1. 메세지관련Contract InterFace (클라이언트->서버) /// //////////////////.. 더보기
(6) 실전 #1 - WCF 채팅 프로그래밍의 개요 이전 내용에서는 WCF의 EndPoint 아키텍쳐에 대한 내용들을 다루어 보았다. 이번 강좌에서는 WCF의 통신으로 채팅 프로그램을 작성하는 방법을 다루어 볼 것이다. 이번 채팅 프로그램 예제에서는 WCF의 인스턴스 관리 부분과 메시지 전달 부분을 주의 깊게 살펴보도록 하자. 본 예제의 소스는 http://wcf.netfx3.com/에서 발행한 샘플을 필자가 커스텀마이징 하여 만들었다. 본 예제를 진행하기 위해서는 Visual Studio.NET 2005와 다음과 같은 환경이 필요하다.- Microsoft .NET Framework 3.0 RTM- Microsoft Windows Software Development Kit for RTM- Microsoft WPF&WCF ExtensionWF의 경우는 W.. 더보기
(5) WCF Hosting과 TraceLog기능의 소개 월간 마이크로소프트웨어에 기고한 기사입니다. HostingWCF의 호스팅은 Self-호스팅과 Web 호스팅으로 구분할 수 있다. WCF 서비스를 호스팅 하는 방법은 다양하다. 앞선 예제에서 다루었던 호스팅 방식은 Web Hosting이다. WCF 서비스를 웹 사이트로 생성하였고, 그 웹사이트의 주소가 바로 Address가 된 것이다. 다음 표2를 보면 호스팅의 특징들을 보여주고 있다.Self-HostingWeb Hosting윈도우 어플리케이션 기반으로 ServiceHost 클래스를 이용하여 호스팅한다.Internet Information Server(IIS) 기반으로 가상 디렉토리 안에 서비스 파일(.svc)을 만들어서 호스팅한다.서비스는 자동으로 관리 되지 않으며, Open()메서드와 Close() 메.. 더보기