728x90
페이스북으로 앱 개발을 해보신 분이라면 수억명을 가진 소셜네트워크 서비스의 위상에 걸맞지 않는 형편없는 개발자 지원에 좌절했던 적이 많으실 겁니다. 그나마 PHP 정도는 지원이 괜찮은 편이지만 C# 과 같은 언어로 웹 서비스를 개발할 때는 거의 패닉에 빠질 정도로 레퍼런스를 찾기 힘든게 현실입니다.

페이스북이 직접 제공하던 개발자 포럼의 코멘트는 이런 형편없는 개발자 지원에 대해 성토하는 댓글들이 참 많습니다. 변경된 API 스펙과 맞지 않는 것들은 기본이고 문의를 하고 답변을 받는 채널도 제대로 구성되어 있지 않았습니다. 페이스북도 이런 문제를 인지하고 있었던 것일까요? 개발자 커뮤니티로 유명한 Stack Overflow 에 페이스북 공식 지원 채널을 열고 지식의 공유를 시작했네요.

Stack Overflow 페이스북 채널 : http://facebook.stackoverflow.com/

 
 
채널이 열린지 얼마 되지 않았지만 벌써 수없이 많은 스레드들이 등록되고 있는 모습이 이채롭습니다. 개발자들이 얼마나 기술지원 채널을 갈구했는지 알 수 있는 대목입니다. 이제 이곳을 통해서 다양한 페이스북 API 와 SDK 사용에 관한 정보를 얻을 수 있을 것 같습니다.

- NoPD - 
728x90
728x90
iBatis.net 을 사용하면 확실히 닷넷 코드 레벨에서 데이터베이스 관련하여 고민할 것이 많이 줄어들기 때문에 무척 좋습니다. Entity Framework 를 쓰면 얻을 수 있는 더 많은 잇점들이 있지만 간단하게 데이터베이스 엑세스에 대한 부분을 정리하고 간편화하는데에는 iBatis.net 이 훨씬 투입 공수가 적은 장점이 있습니다.

다만 iBatis.net 단에서 문제가 발생했을 때는 트러블 슈팅이 쉽지 않은편입니다. 오픈소스기 때문에 누가 책임을 져주는 것도 아니고 한번 내부적으로 처리된 에러 메세지들이 나오기 때문에 더 상세한 오류 원인을 찾으려 삽질하기 일쑤지요. 이번에 개발된 내용물을 클라우드 서버에 포팅하면서 겪은 문제 역시 마찬가지였습니다. 기록 차원에서 블로그에 정리해 둡니다.

에러의 시작, " Unable to open connection to ... "

로컬에서 MS-SQL 을 가지고 작업을 할때 아무런 문제가 없었던 로직. iBatis.net 의 장점을 십분 활용해 실서버 환경에서 provider.config 를 오라클에 맞추어 조정하면 가볍게 끝날것으로 생각했던 작업은 만 하루가 넘게 걸리고서야 해결될 수 있었습니다. 오래걸린 주요한 이유 중 하나가 바로 iBatis.net 가 추상적으로 던진 에러의 원인을 찾기 위함이었네요.

로컬은 32bit 개발환경이고 공교롭게도 처음 포팅했던 서버는 Windows Server 2003 32bit 버전이어서 더욱 오래 걸렸던 이번 에러. 두번째 포팅한 서버가 Windows Server 2008 R2 64bit 환경이었고, 여기에서 System.Data.OracleClient 네임스페이스에 매핑된 라이브러리가 32bit 냐 64bit 냐 때문에 발생하는 것이었습니다.  

참조링크 : OTN 의 OracleClient 64bit 모드 관련 Forum 글 참조 [바로가기]


비주얼 스튜디오로 빌드를 하면서 특별히 빌드 환경을 지정하지 않고 Any CPU 로 하고 있던게 화근이었습니다. iBatis.net 이 계속 에러를 토하는 과정에서 내부 에러를 살펴보니 아래와 같은 메세지를 내놓고 있었습니다. 기본적으로 iBatis.net 이 던져주는 Exception 의 Message 로는 확인이 되지 않는 부분이었습니다.


여러가지 해결 방법들이 제시되었고 가장 많은 것이 Oracle Client 를 환경에 맞게 재설치 하는 것이었는데 제가 전담하는 서버도 아니고 해서 그 방법을 쓰는건 너무 위험해 보였습니다. 그래서 x86 과 x64 로 빌드후 포팅을 해보기로 했는데, x86 으로 재빌드 하고 나서 아무런 문제가 없이 잘 수행되는게 확인 되었습니다.

혹시 비슷한 오류를 겪으시는 분들은 서버 환경에 따라 빌드 옵션을 다르게 주고 빌드한 다음 테스트를 해보시는 것을 추천해 드립니다. 이것 때문에 하루를 넘게 소비했다는 것이 참 어이가 없을 뿐입니다. 아무쪼록 누군가에게 도움이 되고 스스로에게도 언젠가 레퍼런스로 활용할 수 있도록 블로그에 글 남겨둡니다.

- NoPD -
 
728x90
728x90
지난 포스팅에서 Binary 버전으로 다들 NAnt 를 설치하셨나요? Binary 버전을 설치해도 되지만 NAnt 를 이용하는게 주 목적이라면 굳이 Source 를 받아서 컴파일 하실 필요는 없을 것 같습니다. 지난 포스팅을 보지 않고 오셨다면 아래 링크를 이용해서 NAnt 를 먼저 설치하고 오시는게 순서입니다 ^^

 
NAnt 가 빌드하는 원리는 별로 복잡하지 않습니다. 빌드 하고자 하는 프로젝트의 루트 폴더에 *.build 파일을 만들고 이 파일에 빌드에 필요한 함목들을 정의해 주면 됩니다. 앞으로 하나씩 살펴 볼 것들이 바로 *.build 라는 파일에 들어가야 하는 내용을 살펴보는 것이 목적입니다.

간단하게 구성된 소스코드를 이용해서 먼저 NAnt 를 이용한 빌드를 해보고 *.build 파일에 무슨 내용이 기술되어 있는지 살펴보겠습니다. NAnt 공식 다운로드 링크에서 2001년에 개발된 0.1.3 버전의 NAnt 를 이용해서 빌드를 한번 해보도록 하겠습니다. 최근 소스는 규모도 크고 빌드하는 시간도 많이 소요되니 간단한 걸로 먼저 보자는 것이지요!

 
 
다운로드 받은 소스코드를 임의의 경로에 풀어놓고 명령 프롬프트를 실행합니다. 해당 경로로 이동한 다음 nant 라고 치면 위의 화면과 같이 출력되며 빌드가 끝납니다. 참 쉽죠? 0.1.3 버전 폴더에 이미 NAnt.exe 가 있기 때문에 Path 로 열심히 잡은 버전이 실행된 것은 아닙니다. 첫줄에 NAnt.build 파일을 이용한다는 내용이 눈에 띄시죠?

 
바로 확장자 build 를 가진 파일이 빌드에 대한 정보를 담고 있는 파일입니다. 어떤 컴파일러를 사용해서 어떤 경로에 어떤 확장자를 가진 파일을 어떤 소스코드와 리소스를 이용해서 빌드할 것인지를 XML 형태로 기술한 파일입니다. 간단한 소스코드인 만큼 정말 간단한 내용이 들어가 있습니다.

 
빌드 경로에 정말 파일이 생겼는지 찾아가 보았습니다. 네, 잘 생긴게 보입니다. 디버그로 컴파일이 되었기 때문에 pdb 파일이 같이 생성이 되었구요, 실행파일 형태의 NAnt.exe 가 만들어진 것을 볼 수 있습니다. 요게 어떻게 보면 NAnt 의 가장 중요하고도 전부일 수 있는 내용인 것 같습니다. (파면 더 나오겠지만... 일단 크게 보자면 그렇다는 말입니다! ^^) 바로 저 XML 을 어떻게 만드느냐! 에 따라 빌드 자동화를 얼마나 훌륭히 수행할 수 있는지 판가름 날 것 같습니다.

- NoPD - 
728x90
728x90
그동안 빌드 자동화에 대해서 관심만 있었지 실제로 사용해 본 적은 없었습니다. 대부분 Peer to peer 로 배포하는 방식으로 커버가 가능했고 수작업이 어느정도 들어가더라도 Configuration 등을 세심하게 하나씩 살피면서 배포하는 것이 더 편하다고 느끼고 있었기 때문입니다. 

하지만 갑자기 배포해야 할 서버의 규모가 세자리 수 가까이 된다는 생각을 하기 시작하니 이건 사람이 해야 할 일이 아니라는 생각이 들더군요. 그래서 NAnt 라는 도구에 관심을 갖게 되었습니다. 처음 NAnt 를 사용해 보면서 겪는 시행착오를 포스팅으로 고스란히 남겨볼까 합니다.
 

NAnt 는 아파치의 오픈소스 프로젝트인 ANT 에서 유래된 닷넷 버전의 ANT 프로젝트입니다. 빌드에 대한 자동화를 도와주는 도구로 스크립트로 TASK 를 정의하고 이를 이용하여 빌드 자동화를 할 수 있는 도구입니다. 주요한 닷넷 프레임워크의 버전들 지원하고 있으며 도구 상에서 다중 버전에 대한 빌드 진행등이 가능해 수작업으로 빌드하는 경우에 비해 무척 편리하다고 합니다. (써봐야 알겠지요! ^^)

 
NAnt 를 설치하는 방법은 무척 간단합니다. 공식 페이지에서 Binary 혹은 Source 파일을 다운로드 받아 설치하면 됩니다. NAnt 의 소스코드까지 보면서 설치할 요량이 아니라면 Binary 버전을 받아서 설치하는 것이 편리합니다. Binary 버전은 아래와 같은 순서로 간단히 설치가 가능합니다.

[1] Ant 공식 페이지에서 nant-x.xx-bin.zip 파일을 받는다  
[2] 설치하고 싶은 (이라 적고 압축 푼다고 읽는다) 경로에 압축을 푼다 (예> c:\program files\nant)
[3] 어디서나 실행할 수 있도록 nant.bat 를 만들어 PATH 가 잡힌 경로에 둔다

예> c:\Windows\nant.bat 
@echo off
"C:\Program Files\NAnt\bin\NAnt.exe" %* 

[4] 커맨드 창을 열어 nant -help 라고 쳐서 동작하면 설치 완료 



뭔가 많은 일을 했다. ^^ 특히 NoPD 처럼 Windows 폴더에 nant.bat 를 넣으려고 했다면 특히 윈도우7 을 쓰는 환경에서 관리자 권한으로 애를 많이 먹었을 지도 모르겠다. 아예 환경변수에 NAnt 압축을 풀어넣은 경로를 PATH 에 잡아버리는 것도 방법이다. 다음 포스팅 에서는 간단한 예제를 통해 NAnt 를 이용한 빌드를 해보도록 하겠다.

- NoPD -

 
728x90

+ Recent posts