서버 & 네트워크

주니어 개발자 A to Z 서버 & 네트워크

소개

서버와 네트워크는 많은 주니어 개발자에게 ‘뜬구름 잡는’ 이야기처럼 들린다. 이 글은 그 뜬구름을 손에 잡히는 현실로 만드는 것을 목표로 한다. 내 방의 평범한 컴퓨터 한 대가 어떻게 전 세계와 소통하는 서버가 될 수 있는지, 그 원리를 파헤치고 직접 실습해 본다.

이 여정은 서버 운영의 기본이 되는 핵심 개념들을 다지는 것에서 시작한다. 이후 내 컴퓨터를 실제 서버로 만들어 세상에 공개하는 실전 프로젝트를 단계별로 진행한다. 이 과정을 통해 추상적인 지식을 체득된 경험으로 바꾸게 될 것이다.


Part 1: 개념 잡기 (Fundamental Concepts)

[서버 기초] “그래서 환경 변수가 뭔데요?” 내 소중한 API 키, 안전하게 숨기는 법

환경 변수의 본질 – 시스템의 ‘공용 메모장’

환경 변수(Environment Variable)란 운영체제(OS)나 현재 실행 중인 프로세스가 자신의 동작 방식을 결정하기 위해 참조하는 ‘동적인 값들의 모임’이다. 이는 마치 “시스템 전체가 함께 사용하는 공용 메모장”과 같다. 프로그램은 자신의 코드를 직접 수정하지 않고도, 이 공용 메모장에 적힌 값을 읽어와 동작을 바꿀 수 있다.

가장 친숙한 예시는 PATH 환경 변수다. 터미널의 어느 위치에서든 python이나 git 같은 명령어를 실행할 수 있는 이유는, 해당 프로그램들이 설치된 폴더의 경로가 PATH라는 환경 변수에 ‘주소록’처럼 등록되어 있기 때문이다. 운영체제는 명령어를 받으면 현재 폴더에서 먼저 찾아보고, 없으면 PATH에 등록된 주소들을 순서대로 뒤져서 실행 파일을 찾아낸다. 이는 환경 변수가 단순히 비밀번호를 숨기는 용도를 넘어, 운영체제 작동의 근간을 이루는 중요한 요소임을 보여준다.

환경 변수는 왜 ‘반드시’ 써야 하는가? – 보안, 유연성, 그리고 유지보수

환경 변수 사용은 선택이 아닌 필수다. 그 이유는 크게 세 가지로 요약된다.


  • 보안 (Security): 소스 코드에 API 키, 데이터베이스 비밀번호 같은 민감한 정보를 직접 작성하는 것(하드코딩)은 내 집 현관문 비밀번호를 문 앞에 써 붙이는 행위와 같다. 만약 이 코드가 GitHub 같은 공개된 장소에 올라가면, 누구나 이 민감 정보에 접근할 수 있게 되어 심각한 보안 사고로 이어질 수 있다. 환경 변수는 이런 민감 정보를 코드와 물리적으로 분리하여 안전하게 보관하는 가장 기본적이고 강력한 보안 장치다. .env와 같은 파일을 사용하고 이를 .gitignore에 추가하여 버전 관리에서 제외하는 것이 일반적인 패턴이다.



  • 유연성 (Flexibility): 환경 변수는 하나의 코드가 여러 환경에서 유연하게 동작하도록 만드는 핵심 열쇠다. 내 컴퓨터(개발 환경), 동료의 컴퓨터(테스트 환경), 실제 서비스가 돌아가는 서버(운영 환경)는 각각 다른 데이터베이스 주소, 다른 API 키, 다른 설정 값을 사용해야 한다. 이때마다 코드를 수정하는 것은 비효율적이다. 대신, 각 환경에 맞는 환경 변수를 설정해주면 코드는 전혀 건드리지 않고도 실행 환경에 맞춰 스스로 동작을 바꿀 수 있다.



  • 유지보수 (Maintainability): 프로젝트 곳곳에서 사용되는 중요한 설정 값이 변경되어야 할 때를 상상해보자. 환경 변수 없이 하드코딩했다면, 소스 코드 전체를 뒤져서 해당 값을 일일이 찾아 수정해야 한다. 이 과정은 실수를 유발하기 쉽고 매우 번거롭다. 환경 변수를 사용하면 모든 설정 값을 한 곳에서 중앙 관리할 수 있다. 변경이 필요할 때 해당 환경 변수 값 하나만 수정하면, 이를 참조하는 모든 코드에 일괄적으로 변경 사항이 적용되어 유지보수가 극도로 용이해진다.


이러한 이유들을 종합해 보면, 환경 변수의 진정한 가치는 단순히 정보를 숨기는 것을 넘어선다. 그것은 ‘코드’와 코드가 실행되는 ‘환경’을 명확하게 분리하는 현대 소프트웨어 아키텍처의 근본 철학을 구현하는 첫걸음이다. 내 코드는 어떤 환경에 배포되더라도 코드 수정 없이 설정 값 주입만으로 동작할 수 있어야 한다는 ‘이식성’의 원칙을 지키는 가장 기본적인 도구가 바로 환경 변수인 것이다.

Table 1: 운영체제별 환경 변수 설정 완벽 가이드

주니어 개발자들이 가장 혼란스러워하는 부분 중 하나는 운영체제마다 다른 환경 변수 설정 방법이다. 아래 표는 Windows, macOS, Linux 환경에서 GUI와 CLI(명령줄 인터페이스)를 이용한 영구/임시 설정 방법을 한눈에 비교하여 제공한다.

구분WindowsmacOS / Linux
특정 변수 확인echo %변수명% (예: echo %PATH%)echo $변수명 (예: echo $PATH)
모든 변수 확인setenv 또는 printenv
임시 설정 (세션 유지)set 변수명=값export 변수명=값
영구 설정 (GUI)시스템 속성 > 고급 > 환경 변수N/A (주로 CLI 사용)
영구 설정 (CLI)setx 변수명 "값"~/.zshrc 또는 ~/.bashrc 파일에 export 변수명=값 추가 후 source 명령어로 적용
변수 삭제/해제set 변수명= (임시) / GUI에서 삭제 (영구)unset 변수명 (임시) / 설정 파일에서 해당 라인 삭제 (영구)

[네트워크 기초] 내 컴퓨터 주소는 왜 매일 바뀔까? 유동 IP와 고정 IP 이야기

IP 주소 – 인터넷 세계의 ‘집 주소’

IP(Internet Protocol) 주소는 인터넷이라는 거대한 네트워크에 연결된 모든 장치(컴퓨터, 스마트폰, 서버 등)가 서로를 식별하고 통신하기 위해 부여받는 고유한 논리적 주소다. 현실 세계에서 편지를 보내려면 집 주소가 필요한 것처럼, 인터넷에서 데이터를 주고받으려면 반드시 이 IP 주소가 있어야 한다.

유동 IP (Dynamic IP) – ‘임시로 빌려 쓰는 주소’

대부분의 가정집 인터넷은 유동 IP를 사용한다. 이는 인터넷 서비스 제공업체(ISP: KT, SKT, LG U+ 등)가 사용자가 인터넷에 접속을 시도할 때마다, 현재 비어있는 IP 주소를 ‘임대’해주는 방식이다. 따라서 컴퓨터를 껐다 켜거나 공유기를 재부팅하면 이전과 다른 IP 주소를 할당받게 된다.

이러한 동적 할당은 DHCP(Dynamic Host Configuration Protocol) 라는 프로토콜을 통해 자동으로 이루어진다. ISP가 유동 IP 방식을 선호하는 가장 큰 이유는 한정된 IPv4 주소 자원의 고갈 문제 때문이다. 전 세계 모든 인터넷 기기에 고유한 고정 IP를 할당하기에는 주소의 개수가 턱없이 부족하다. 그래서 ISP는 현재 인터넷을 사용 중인 기기에만 IP를 동적으로 할당하고, 접속을 끊으면 해당 IP를 회수하여 다른 사용자에게 재할당하는 효율적인 자원 관리 방식을 택한 것이다.

고정 IP (Static IP) – ‘영원한 내 주소’

고정 IP는 이름 그대로 한번 부여받으면 바뀌지 않는 고정된 주소를 의미한다. 주로 웹 사이트, 게임 서버, 회사 메일 서버처럼 외부 사용자들이 항상 동일한 주소로 접속해야 하는 서비스를 운영할 때 필수적으로 사용된다. 만약 네이버의 서버 주소가 매일 바뀐다면 아무도 네이버에 접속할 수 없을 것이다. 고정 IP는 이러한 안정적인 서비스 제공을 가능하게 한다. 일반적으로 고정 IP는 ISP에 추가 비용을 지불하고 할당받는 부가 서비스이며, 직접 설정해야 하므로 관리가 좀 더 복잡하다.

이처럼 유동 IP와 고정 IP의 구분은 단순히 기술의 좋고 나쁨의 문제가 아니다. 이는 ‘한정된 자원을 어떻게 효율적으로 분배하고 관리할 것인가’라는 경제적, 정책적 관점이 반영된 결과다. 유동 IP가 일반적인 이유는 기술적으로 우월해서가 아니라, ISP에게는 비용 효율적이고 대다수 사용자에게는 저렴하며 충분하기 때문이다. 반면, 고정 IP는 ‘주소의 불변성’이라는 가치를 위해 추가 비용을 지불하는 일종의 프리미엄 서비스인 셈이다. 기술의 이면에 존재하는 이러한 경제적, 사회적 맥락을 이해하는 것은 개발자의 시야를 넓혀준다.

Table 2: 유동 IP vs. 고정 IP 핵심 비교

두 IP 타입의 장단점을 넘어, ‘어떤 상황에 무엇을 선택해야 하는가’라는 실용적인 의사결정을 돕기 위해 다양한 측면에서 비교한다.

특징유동 IP (Dynamic IP)고정 IP (Static IP)
주소 할당접속 시마다 ISP(DHCP 서버)가 자동으로 할당사용자가 직접 설정하거나 ISP로부터 고정 할당
주소 변경주기적으로 변경됨변경되지 않음
주요 사용처일반 가정, 소규모 사무실웹 서버, FTP 서버, 기업, PC방
비용저렴 (일반 인터넷 요금에 포함)비쌈 (별도 부가 서비스)
장점– 설정이 간편함 (자동) <br>- IP 자원 효율적 사용 <br>- IP 추적이 어려워 약간의 보안 이점– 서버 운영에 필수적 (주소 불변) <br>- 안정적이고 예측 가능한 연결 <br>- 원격 접속 및 관리가 용이함
단점– 주소가 계속 바뀌어 서버 운영에 부적합 <br>- 원격 접속 시 현재 IP를 알아야 하는 번거로움– 비용이 비쌈 <br>- IP가 고정 노출되어 해킹 표적이 되기 쉬움 <br>- 설정이 상대적으로 복잡함

Part 2: 실전 프로젝트 (Hands-on Project)

[내 방 서버] 공유기 설정 완전 정복: 포트 포워딩으로 세상에 내 PC 개방하기

우리 집 네트워크의 비밀 – 공유기와 사설 IP

대부분의 가정에서는 인터넷 통신사로부터 들어오는 인터넷 회선 하나를 공유기에 연결하여 사용한다. 공유기는 ISP로부터 받은 하나의 공인 IP(Public IP) 주소를 이용해, 여러 대의 기기(PC, 노트북, 스마트폰 등)가 동시에 인터넷을 사용할 수 있도록 신호를 나누어주는 역할을 한다.

이때 공유기는 192.168.0.2, 192.168.0.3과 같이 192.168.x.x 형태의 사설 IP(Private IP) 주소를 각 기기에 자동으로 할당한다. 이 사설 IP들은 우리 집 공유기 아래에 연결된 ‘내부 네트워크(사설망)’ 안에서만 유효한 주소이며, 외부 인터넷 세상에서는 이 주소로 직접 접근하는 것이 불가능하다.

NAT(Network Address Translation) – ‘똑똑한 경비 아저씨’

내부망의 PC가 외부 인터넷(예: https://www.google.com/search?q=google.com)에 접속할 때 어떤 일이 일어날까? 공유기는 PC의 사설 IP 주소(192.168.0.2)를 공유기 자신이 가진 공인 IP 주소로 ‘주소 변환(Translation)’하여 요청을 보낸다. 구글 서버는 이 요청을 받고 공인 IP 주소로 응답을 보내주면, 공유기는 이 응답을 받아서 원래 요청을 보냈던 PC(192.168.0.2)에게 정확히 전달해준다. 이 똑똑한 주소 변환 기술이 바로 **NAT(Network Address Translation)**다.

이 과정을 아파트에 비유하면 이해하기 쉽다. 공유기는 ‘아파트 경비실’, 공인 IP는 ‘아파트 대표 주소’, 사설 IP는 ‘각 세대의 호수’와 같다. 101호(사설 IP) 주민이 인터넷 쇼핑을 하면, 경비실(공유기)이 아파트 대표 주소(공인 IP)로 주문을 대신해주고, 외부에서 택배가 도착하면 경비실이 받아서 원래 주문한 101호로 정확히 전달해주는 원리와 같다.

포트 포워딩 – ‘외부 손님을 특정 호수로 안내하기’

NAT는 내부에서 외부로 나가는 통신은 자유롭게 허용하지만, 반대로 외부에서 내부로 들어오려는 모든 시도는 기본적으로 차단한다. 이것이 바로 공유기를 사용하는 것만으로도 기본적인 보안이 확보되는 이유다.

하지만 만약 내 PC에서 웹 서버를 띄우고 외부의 친구가 접속하게 하려면 어떻게 해야 할까? 이때 필요한 것이 **포트 포워딩(Port Forwarding)**이다. 포트 포워딩은 “외부에서 특정 포트(문)로 들어오는 손님(요청)은 내부 네트워크의 특정 PC(특정 호수)로 안내해달라”고 공유기(경비실)에 미리 규칙을 설정해두는 것이다.

NAT와 포트 포워딩의 관계를 다시 생각해보면, 공유기가 만든 사설 네트워크는 그 자체로 외부의 침입을 막는 하나의 거대한 ‘보안 장벽’ 또는 ‘방화벽’ 역할을 한다. 이 관점에서 포트 포워딩은 단순히 길을 터주는 행위를 넘어, 이 견고한 보안 장벽에 의도적으로 ‘구멍을 뚫는’ 행위와 같다. 즉, 특정 포트 번호로 오는 트래픽이라는 ‘통행증’을 가진 손님에게만 입장을 허락하는 것이다. 따라서 포트 포워딩을 설정할 때는 “어떤 포트를, 왜, 어디로 열어야 하는가?”를 명확히 이해하고, 필요한 최소한의 포트만 여는 보안적 관점이 반드시 필요하다.

iptime 공유기 포트 포워딩 실습 (단계별 가이드)


  1. 공유기 관리자 페이지 접속: 웹 브라우저 주소창에 192.168.0.1을 입력하여 iptime 공유기 설정 페이지에 접속한다. 초기 아이디와 비밀번호는 보통 admin/admin이다. 로그인 후 ‘관리도구’를 클릭한다.


  2. 내부 IP 주소 확인: 서버로 사용할 PC의 사설 IP 주소를 확인해야 한다.

    • Windows: 명령 프롬프트(cmd)를 열고 ipconfig를 입력한 뒤, ‘IPv4 주소’ 항목을 확인한다.
    • macOS/Linux: 터미널을 열고 ifconfig | grep inet 또는 ip a 명령어를 입력하여 IP 주소를 확인한다.

  3. 포트 포워드 설정 메뉴 이동: 왼쪽 메뉴에서 고급 설정 > NAT/라우터 관리 > 포트포워드 설정으로 이동한다.


  4. 규칙 추가:

    • 규칙 이름: ‘내 웹서버’, ‘my-server’ 등 나중에 식별하기 쉬운 이름을 자유롭게 입력한다.
    • 내부 IP 주소: 2단계에서 확인한 서버 PC의 사설 IP 주소를 입력한다. 만약 지금 관리자 페이지에 접속한 PC가 서버 역할을 할 PC라면, ‘현재 접속된 IP 주소’ 체크박스를 클릭하면 자동으로 입력되어 편리하다.
    • 프로토콜: 웹 서버, SSH 접속 등 대부분의 인터넷 통신은 TCP 프로토콜을 사용하므로 TCP를 선택한다.
    • 외부 포트: 외부에서 내 서버에 접속할 때 사용할 포트 번호를 입력한다. 예를 들어 8080을 입력한다. 이 포트 번호는 다른 규칙과 겹치지 않는 임의의 번호를 사용할 수 있다.
    • 내부 포트: 내 PC의 서버 프로그램이 실제로 실행되어 요청을 기다리는(Listen) 포트 번호를 입력한다. 예를 들어, 로컬 PC에서 80번 포트로 웹 서버를 띄웠다면 80을 입력한다.

  5. 적용 및 저장: 규칙 내용을 모두 입력했다면 ‘적용’ 버튼을 누르고, 페이지 우측 상단의 ‘저장’ 버튼을 눌러 설정을 최종적으로 공유기에 반영한다.



  6. 방화벽 설정 확인: 공유기 설정을 마쳤더라도 PC 자체의 방화벽(예: Windows Defender 방화벽)이 해당 포트를 막고 있으면 외부 접속이 불가능하다. 따라서 제어판의 방화벽 설정에서 ‘인바운드 규칙’을 새로 만들어, 위에서 설정한 ‘내부 포트'(예: 80)로 들어오는 연결을 허용해주어야 한다.


[내 방 서버] “내 도메인 갖기” DDNS로 매일 바뀌는 우리 집 IP에 이름표 달아주기 (feat. iptime)

문제점 재확인 – ‘주소가 계속 바뀌는 가게’

앞선 단계에서 포트 포워딩을 통해 외부에서 내 PC로 들어오는 길을 열었다. 하지만 심각한 문제가 남아있다. 우리 집 공인 IP는 유동 IP이기 때문에 공유기를 껐다 켜거나 일정 시간이 지나면 주소가 바뀐다. 어제 친구에게 알려준 IP 주소(123.45.67.89:8080)가 오늘은 98.76.54.32:8080으로 바뀌어버리면 친구는 더 이상 내 서버에 접속할 수 없다. 매번 바뀌는 주소를 확인해서 알려주는 것은 매우 비효율적이다.

해결사 DDNS(Dynamic DNS)의 등장

이 문제를 해결하기 위해 등장한 기술이 **DDNS(Dynamic DNS)**다. DDNS는 ‘동적 DNS’의 약자로, 이름처럼 계속해서 동적으로 변하는 유동 IP 주소를 my-home-server.iptime.org와 같이 외우기 쉽고 변하지 않는 고정된 도메인 이름에 실시간으로 연결(매핑)해주는 서비스다.

DDNS의 작동 원리는 다음과 같다. 공유기에 내장된 DDNS 클라이언트 프로그램이 주기적으로 우리 집의 현재 공인 IP 주소를 확인한다. 만약 IP 주소가 변경된 것을 감지하면, 즉시 DDNS 서비스 서버에 접속하여 “내 도메인(my-home-server.iptime.org)의 IP 주소가 새로운 주소로 바뀌었으니 업데이트 해줘!”라고 자동으로 알려준다. 덕분에 우리는 계속 변하는 IP 주소를 외울 필요 없이, 항상 고정된 도메인 주소만으로 내 서버에 접속할 수 있게 된다.

DDNS의 본질은 단순한 ‘이름 붙이기’를 넘어선다. 전통적인 DNS 시스템은 변하지 않는 도메인 이름과 (대부분) 변하지 않는 IP 주소를 연결하는 정적인 시스템이다. 하지만 우리의 현실은 IP 주소가 동적으로 변한다는 것이다. DDNS는 이 정적인 시스템과 동적인 현실 사이의 불일치를 ‘자동 업데이트’라는 프로세스를 통해 해결한다. 즉, DDNS는 ‘상태 변화(IP 변경)를 감지하여 시스템을 자동으로 정상 상태로 복구하는 자동화(Automation) 시스템’이다. 이는 주니어 개발자가 앞으로 마주할 수많은 엔지니어링 문제, 즉 ‘변화에 능동적으로 대응하는 안정적인 시스템 구축’이라는 과제의 훌륭한 축소판이다.

iptime DDNS 설정 실습 (단계별 가이드)


  1. DDNS 설정 메뉴 이동: iptime 공유기 관리자 페이지에 접속한 후, 고급 설정 > 특수 기능 > DDNS 설정 메뉴로 이동한다.


  2. DDNS 정보 입력:

    • 호스트 이름: my-home-server와 같이 내가 사용할 도메인의 앞부분을 영문과 숫자를 조합하여 입력한다. 중복되지 않는 이름이어야 하며, 최종 주소는 입력한이름.iptime.org가 된다.
    • 사용자 ID: 본인의 이메일 주소를 정확하게 입력한다. 나중에 DDNS 설정을 관리할 때 필요하다.

  3. DDNS 등록: 정보를 모두 입력한 후 DDNS 등록 버튼을 클릭한다.



  4. 정상 등록 확인: 잠시 후, 아래 목록에 내가 등록한 호스트 이름이 나타나고 ‘접속 상태’가 ‘정상 등록’으로 표시되는지 확인한다. 이제 모든 설정이 끝났다. 웹 브라우저 주소창에 http://my-home-server.iptime.org:8080 (포트 포워딩에서 설정한 ‘외부 포트’ 번호 포함)을 입력하면, 전 세계 어디서든 내 PC의 서버에 접속할 수 있다.


[실행 명령어] functions-framework 명령어, 옵션별로 파헤쳐 보기 (–target, –port, –source)

Functions Framework – ‘내 PC 안의 작은 클라우드’

functions-framework는 Google Cloud Functions와 같은 서버리스(Serverless) 함수를 클라우드에 배포하기 전에, 내 로컬 PC에서 미리 실행하고 테스트할 수 있도록 도와주는 오픈소스 개발 도구다.

이 프레임워크가 필요한 이유는 개발 생산성과 직결된다. 코드를 단 한 줄만 수정하더라도, 매번 클라우드에 배포하고 그 결과를 확인하는 과정은 수 분의 시간을 소요하는 고통스러운 작업이다. functions-framework는 실제 클라우드와 거의 동일한 실행 환경을 내 PC에 그대로 재현해준다. 덕분에 개발자는 코드 수정 후 저장과 동시에 즉시 결과를 확인하고 디버깅할 수 있다. 이는 개발 과정의 **피드백 루프(Feedback Loop)**를 획기적으로 단축시켜 생산성을 극대화한다.

프레임워크는 단순한 에뮬레이터를 넘어선다. 클라우드 환경은 함수가 특정 형태(예: (req, res) 파라미터를 받는 구조)를 가질 것을 요구하는데, 이는 개발자와 클라우드 플랫폼 간의 일종의 ‘계약(Contract)’이다. functions-framework는 로컬 환경에서부터 이 계약을 올바르게 지키도록 강제하고 유도하는 ‘가이드’ 역할을 한다. 결과적으로 “내 컴퓨터에서는 잘 돌아갔는데, 클라우드에 올리니 안 돼요(It works on my machine)”라는 고질적인 문제를 사전에 방지하여 배포 성공률을 높여주는 중요한 도구다. --target, --port와 같은 옵션들은 이 로컬 시뮬레이션 환경을 실제 배포 환경과 최대한 똑같이 맞추기 위한 정교한 ‘조작 스위치’들인 셈이다.

주요 옵션 상세 분석

  • --target=FUNCTION_NAME:

    • 역할: 실행할 함수의 이름을 명시적으로 지정한다. 하나의 소스 파일 안에 여러 개의 함수가 정의되어 있을 경우, 그중 어떤 함수를 서버로 실행할지 프레임워크에 알려주는 역할을 한다.
    • 예시: functions-framework --target=helloHttp
  • --port=PORT_NUMBER:

    • 역할: 로컬에서 함수 서버가 실행될 포트 번호를 지정한다. 이 옵션을 생략하면 기본값인 8080 포트로 실행된다. 만약 로컬 PC에서 다른 서비스가 8080 포트를 이미 사용하고 있다면, 이 옵션을 사용하여 포트 충돌을 피할 수 있다.
    • 예시: functions-framework --target=helloHttp --port=3000
  • --source=SOURCE_FILE_PATH:

    • 역할: 실행할 함수 코드가 담긴 소스 파일의 경로를 지정한다. 보통은 package.json이 있는 현재 디렉토리의 기본 파일(예: index.js)을 자동으로 찾지만, 다른 폴더에 있거나 다른 이름의 파일을 실행하고 싶을 때 이 옵션을 사용한다.
    • 예시: functions-framework --target=helloHttp --source=./functions/main.js

통합 예제

index.js 파일에 helloHttp라는 이름의 함수를 작성했다고 가정한다. 이 함수를 로컬에서 8081 포트로 실행하고 싶다면, 프로젝트의 package.json 파일의 scripts 부분에 다음과 같이 명령어를 등록하는 것이 좋다.

"scripts": {
"start": "functions-framework --target=helloHttp --port=8081 --source=./index.js"
}

이제 터미널에서 npm start 명령어만 입력하면, 프레임워크가 index.js 파일에서 helloHttp 함수를 찾아 8081 포트로 실행해준다. 웹 브라우저에서 http://localhost:8081로 접속하면 함수의 실행 결과를 즉시 확인할 수 있다.


결론

이 글을 통해 눈에 보이지 않던 네트워크의 개념들을 내 손으로 직접 만지고 설정해보았다. 소중한 정보를 안전하게 지키는 환경 변수의 중요성을 이해했고, 내 컴퓨터의 주소가 왜 매일 바뀌는지 유동 IP고정 IP 이야기를 통해 알게 되었다. 더 나아가, NAT포트 포워딩으로 우리 집의 보안 장벽을 넘어 세상과 통하는 문을 열었고, DDNS로 그 문에 ‘나만의 이름표’를 달아주었다. 마지막으로 Functions Framework를 통해 이 모든 과정을 빠르고 효율적으로 테스트하는 방법까지 익혔다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다