개인 프로젝트에서 페이스북 소셜로그인을 구현하려는데 해보니까 진짜 쉽지만 초반에는 하루 이틀정도 헤멨던 것 같다. Spring.io에서 예제들을 열심히 찾았지만 Spring boot 사용을 전제로 해서 내놓은 것이라서 예시에서는 자동적으로 되던 것이 당연히 내 프로젝트에서는 안됐고 적지않은 구글링을 했어야 했다.
ReadNode.js Express 앱 생성 후 루트에 Procfile(web: node ./bin/www)을 추가하고, 라이브러리는 반드시 npm install --save로 설치하여 package.json 의존성을 정확히 관리해야 Heroku Deploy 시 오류가 없다. Heroku 대시보드에서 앱 생성 후 CLI로 heroku git:remote로 원격 Repository를 설정하고, git push heroku master 한 번으로 프레임워크 자동 탐지 및 Deploy까지 완료된다. 설정이 극히 간단하여 프로토타입/테스트 용도로는 훌륭하나, 해외 서버 위치로 인한 응답 지연, Sleep 모드 자동 전환, DB 성능 문제 등으로 정식 서비스는 유료 플랜 전환이 필요하다.
ReadHttpServletRequestWrapper 를 상속한 확장 클래스를 만들어 getParameter, getParameterValues, getHeader 메서드를 오버라이드하고, 네이버의 lucy-xss-filter 라이브러리로 Escape 처리한 값을 리턴하도록 구현한다. lucy-xss-filter는 XssPreventer(단순 문자열 전체 Escape)와 XssFilter(HTML 태그가 필요한 본문은 스크립트만 선별 필터링) 두 가지를 제공하며, 파라미터명이 content로 시작하면 XssFilter를, 그 외에는 XssPreventer를 적용한다. Spring의 OncePerRequestFilter 를 상속한 CrossSiteScriptingFilter를 만들어 GET/POST 요청에만 XSS 필터를 적용하고, web.xml에 등록하면 비즈니스 로직에 손대지 않고 일괄 처리가 완성된다.
ReadOSX 엘 캐피탄에서 pip install "ipython[notebook]" 시도 시 오류가 발생하는데, 이는 엘 캐피탄의 보안 설정으로 인해 내장 Python 환경에서 패키지 설치가 제한되기 때문이다. easy_install로 Numpy/Pandas 등은 설치되지만 ipython 설치 시에는 여전히 오류가 발생하므로, /usr/local 디렉터리 퍼미션 조정 후 Homebrew로 Python을 재설치하는 것이 올바른 해결책이다. Homebrew로 Python 재설치 후 sudo pip install "ipython[notebook]" 을 실행하면 정상적으로 설치된다.
ReadAWS는 온디맨드 기반의 클라우드 서비스로, 서버·스토리지·네트워크를 API로 유연하게 확장/축소하며 사용한 만큼 비용을 지불하는 구조이다. EC2, EBS, S3, RDS, DynamoDB 등 다양한 서비스와 Auto Scaling, ELB를 통해 확장성과 고가용성을 확보할 수 있다. 클라우드는 초기 비용 절감과 운영 편의성이 있지만, 보안·비용 관리·벤더 종속성 등 고려사항이 있으며 이중화 설계가 중요하다.
ReadNode.js에서 Oracle DB 연동은 다른 DB보다 복잡하며, Instant Client 설치와 환경변수 설정이 필수적이다. oracledb 모듈 설치 과정에서 컴파일러, Python 버전, 라이브러리 경로 등 다양한 의존성 문제를 해결해야 했다. 여러 오류를 해결한 후 Node.js에서 Oracle 쿼리를 정상 실행하며 연동에 성공했다.
Read기존 서버에서 80포트를 이미 사용 중인 상황을 해결하기 위해, Webtob의 리버스 프록시 기능으로 80포트 요청을 Node.js 애플리케이션(예: 3000포트)으로 전달하는 방법을 적용했다. Apache 사례는 많았지만 Webtob 연동 자료는 드물어 직접 문서를 확인했고, http.m의 VHOST와 REVERSE_PROXY 설정만으로 비교적 간단하게 구현할 수 있었다. 설정 후 http.m를 컴파일하고 Webtob를 재시작하면, 별도 포트번호 없이도 80포트로 Node.js 서비스에 접근할 수 있다.
ReadNode.js 설치는 압축 해제만으로 간단히 가능하며, 프로젝트에서는 오라클 연동 문제로 최신 버전 대신 0.12 버전을 사용했다. Node.js 실행 디렉터리에서 간단한 JS 파일을 작성하고 node 명령어로 웹서버를 구동하는 방법을 실습했다. 서버 실행 후 브라우저에서 IP와 포트로 접속하여 Hello World 페이지를 확인하며 정상 동작을 검증했다.
ReadNode.js 기반 웹 애플리케이션을 Webtob 프록시 서버와 연동하여 80포트 요청을 Node.js로 전달하는 개발 환경을 구성했다. CentOS 7 환경에서 Webtob를 설치하고, 권한 설정·환경변수·라이선스 적용 등 서버 실행을 위한 설정 과정을 수행했다. wscfl, wsboot, wsdown 등의 명령어를 통해 Webtob 서비스를 관리하며 실제 구동 환경을 구축했다.
ReadRedis는 key:value 기반의 NoSQL 저장소이며, set/get 같은 기본 명령과 publish/subscribe를 통해 메시지 송수신 기능도 제공한다. 예제에서는 한쪽에서 subscribe로 채널을 구독하고, 다른 쪽에서 publish로 메시지를 보내 실시간으로 수신하는 Pub/Sub 동작을 실습했다.
Read