온프레미스 방식으로 개인 노트북에 WAS 올리기

hwee·2024년 8월 20일
0

COGO개발과정

목록 보기
11/12
post-thumbnail
post-custom-banner

3줄요약

  1. 안쓰는 노트북에 WAS를 올려 외부에서 요청을 받을 수 있게 하였다.
  2. 공인 IP(공유기)와 사설 IP(노트북)을 포트포워딩 하였다.
  3. 내가 개선한 API의 성능을 직접 테스트할 수 있는 나만의 서비스를 개발하였다.

상황

AWS, GCP등을 이용하면 손쉽게 애플리케이션 배포가 가능하며, 관리 또한 맡길 수 있다.
하지만 보다 근본적으로, 내 PC를 서버로 사용하고 싶어져서 내 개인 프로젝트를 준비하였다.
간단한 개인 웹페이지를 리액트 애플리케이션으로 구성해 Netlify로 배포하고,
내가 COGO를 진행하며 개선한 API의 개선 전 후 성능을 측정할 수 있는 WAS를 내 노트북에 올릴 것이다.

환경

HP의 엘리트북이며, 16램에 512GB 환경이라 파티셔닝을 통해 윈도우와 리눅스를 동시 유지한다.
리눅스는 Ubuntu 24 LTS를 설치하였다.

1. 파티셔닝 및 우분투 설치

파티셔닝은 reference를 참고했으며, 우분투 설치는 USB를 사용했는데, reference를 참고했다.
우분투 환경에서는 Git, Redis, MySQL을 설치한 후 우분투 Desktop을 설치하여 GUI환경에서 작업하였다.

2. 공인 IP의 포트와 사설 IP 포트 포워딩

reference를 참고하면, 내 공유기에 할당된 공인 IP와, 공유기에 연결된 내 노트북에 사설 IP가 배정되어 있는데, 공유기 관리 홈페이지에서 공인IP의 특정 포트에 접근시 내 노트북의 특정 포트로 연결되는 작업을 해주었다.

이슈 발생 : TCP와 UDP

나는 HTTP 프로토콜을 통해 웹 서버와 WAS를 연결할 것이기 때문에, 공인IP와 사설 IP의 포트 포워딩을 TCP로 해주었다. (TCP와 UDP란? reference )
스프링 애플리케이션이기 때문에 8080포트를 열어두었는데, 계속하여 포트포워딩이 안되는 이슈가 발생했다.
KT 고객센터에 전화해보니, 8080포트가 기본적으로 KT에서 TCP 프로토콜을 허용하지 않는다고 한다.
따라서 8081포트로 바꾼 후, 다시 실험해보았다.

이처럼 포트 포워딩을 설정하였고,

포트포워딩 테스트가 성공했음을 확인했다.

3. WAS용 도메인 구매 후 DNS에 등록

가비아에서 WAS용 도메인을 구매한 후, 가비아의 DNS에 등록하고 AWS의 Route53으로 도메인을 공인IP로 라우팅해주었다.
Route53에서 레코드를 등록하는 것과 같은 작업들은 reference와 같다.
이후 Nginx로 HTTPS로 들어온 요청을 HTTP로 전환하여 내부 로컬 서버로 전달하는 역프록시 작업을 해주었고, SSL인증서를 발급받아 HTTPS프로토콜을 적용했다.
ssl과 https의 관계는 reference를 참고하면 알 수 있다.

4. 결과

웹서버와 WAS의 API연동 코드를 작성한 후, 테스트해보았다.

클라이언트가 테스트할 API에 생성할 스레드 수와, 각 스레드가 수행할 요청의 수를 입력하면 그 작업을 WAS에서 수행한 후, 걸린 시간을 ms단위로 반환해주는 방식이다.
이로써 JMeter나 프로파일러를 사용해 성능을 측정하는 것을 넘어서, 내 API의 성능을 측정할 수 있는 나만의 작은 프로파일러를 안쓰는 노트북을 사용해 만들게 되었다.
이처럼 나만의 도전을 해나가는 것은 성취감을 동반한 학습을 하기 좋은 동기가 되는 듯하다.

5. 미제 (해결예정)

  1. 포트포워딩을 한 것으로는 즉각적 해결이 되지 않고, Twin IP를 사용해야 포트포워딩이 제대로 작동하였는데, 그 이유는?
  2. 공인 IP도 유동, 프라이빗 IP도 유동인 공유기를 사용중인데, 이를 해결하려면 KT의 부가 서비스를 결제해야 하는가?
profile
https://fuzzy-hose-356.notion.site/1ee34212ee2d42bdbb3c4a258a672612
post-custom-banner

0개의 댓글