배포란
개발이 완료된 프로그램, 웹사이트, 앱 등을 사용자가 사용할 수 있도록 공개하고 운영 환경에 올리는 작업
쉽게 말해, **“코드를 작성한 뒤, 실제로 사람들이 사용할 수 있도록 준비하는 과정”**
1) 웹 배포
• 웹 애플리케이션이나 웹사이트를 인터넷에서 접근할 수 있도록 공개.
• 사용되는 도구:
• 웹 서버: 배포된 웹사이트를 사용자에게 보여주는 서버.(예: Apache, Nginx)
• 클라우드 서비스: AWS, Google Cloud, Firebase, Vercel, Netlify 등.
• Vercel, Netlify: 정적 웹사이트와 프론트엔드 애플리케이션 배포에 최적화.
• Firebase Hosting: Google에서 제공하는 간단한 배포 서비스.
2) 앱 배포
• 모바일 앱(iOS, Android)을 앱스토어에 공개.
• 사용되는 플랫폼:
• iOS 앱스토어: Apple의 앱스토어에 앱을 업로드.
• Apple Developer Console: iOS 앱 배포.
• Google Play 스토어: 안드로이드 앱 배포.
• Google Play Console: Android 앱 배포.
3) 서버 배포
• 서버 애플리케이션(API, 백엔드 등)을 클라우드 서버나 물리 서버에 올려서 사용 가능하게 만듦.
• 사용되는 도구: Docker, Kubernetes, AWS EC2, Heroku.
• AWS EC2, Heroku: 서버 애플리케이션을 호스팅.
• Docker, Kubernetes: 컨테이너 기반의 배포.
**컨테이너(Container)**란?
• 컨테이너는 애플리케이션(프로그램)과 그 애플리케이션이 실행되기 위해 필요한 모든 것(코드, 라이브러리, 설정 파일 등)을 하나의 독립된 패키지로 묶은 것
• 컨테이너는 어디서 실행하든 똑같이 동작하도록 환경을 표준화해줍니다.
컨테이너 기반 배포를 사용하는 이유
1. 환경 통일:
• 개발 환경, 테스트 환경, 운영 환경 모두 동일하게 실행 가능.
• “내 컴퓨터에서는 잘 되는데, 서버에서는 안 돼요!” 같은 문제가 없어짐.
2. 확장성(Scalability):
• Kubernetes 같은 도구를 사용해 자동으로 서버를 확장하거나 여러 컨테이너를 동시에 실행 가능.
• 예: 사용자가 갑자기 몰려오면, 컨테이너를 더 많이 띄워서 트래픽을 감당.
3. 복잡한 시스템에 적합:
• 마이크로서비스 아키텍처(여러 독립적인 서비스로 나눠진 시스템)를 관리할 때 컨테이너가 유용.
• 각 서비스를 개별 컨테이너로 실행 가능.
컨테이너 기반 배포를 사용하는 상황
• 대규모 프로젝트: 여러 마이크로서비스가 실행되는 대규모 애플리케이션.
• 팀이 큰 경우: 개발, 테스트, 배포 환경을 표준화해서 팀 간 협업을 원활하게 하고 싶을 때.
• 배포 자동화가 중요할 때: Kubernetes를 통해 서버 확장, 복구 등을 자동화.
AWS EC2, Heroku 같은 전통적인 배포
AWS EC2
• **EC2(Elastic Compute Cloud)**는 AWS에서 제공하는 가상 서버입니다.
• 서버의 크기(CPU, 메모리 등)와 운영체제를 개발자가 직접 선택하고 설정 가능.
Heroku
• Heroku는 **클라우드 기반 PaaS(Platform as a Service)**로, 설정과 배포가 EC2보다 간단.
• 코드만 업로드하면 자동으로 서버를 생성하고 실행 환경을 관리.
AWS EC2/Heroku를 사용하는 이유
1. 간단한 설정 (Heroku):
• 빠르게 배포가 필요할 때 적합.
• 복잡한 설정 없이 코드만 업로드하면 배포 가능.
2. 세부 설정 가능 (EC2):
• AWS EC2는 서버 크기, 네트워크 설정 등 모든 것을 세부적으로 설정 가능.
• 서버와 데이터베이스를 완전히 커스터마이즈하고 싶을 때 유용.
3. 작거나 중간 규모 프로젝트에 적합:
• 컨테이너 관리 도구(Kubernetes)까지 필요 없는 단순한 웹 서비스에 적합.
• 예: 블로그, 소규모 웹사이트.
AWS EC2/Heroku를 사용하는 상황
• 소규모 프로젝트:
• 간단한 웹사이트, 개인 프로젝트 등에서 적합.
• 복잡한 관리가 필요하지 않을 때:
• Heroku는 설정이 간단하고 자동으로 배포되므로 빠르게 시작 가능.
• 클라우드 서비스와 통합:
• AWS EC2는 AWS의 다른 서비스(S3, RDS, Lambda 등)와 쉽게 연동 가능.
4. 배포 방법
- 수동 배포
• 개발자가 직접 서버에 파일을 업로드하거나 코드를 실행.
• 간단하지만, 자동화되지 않아서 실수가 발생할 가능성이 큼.
- 자동화 배포(CI/CD)
• CI/CD (Continuous Integration/Continuous Deployment) 파이프라인을 사용해 배포를 자동화.
• 도구: GitHub Actions, Jenkins, GitLab CI/CD, CircleCI.
**파이프라인(Pipeline)**이란?
• 파이프라인은 소프트웨어 개발에서 코드가 배포될 때까지의 모든 과정을 자동화한 흐름을 말해요.
• CI/CD에서 파이프라인은 주로 코드를 빌드, 테스트, 배포하는 일련의 단계를 자동화한 프로세스입니다.
CI/CD란?
1. CI (Continuous Integration):
• 지속적 통합: 개발자가 코드를 변경할 때마다, 새로운 코드가 기존 코드와 잘 동작하는지 확인.
• 빌드와 테스트 자동화.
2. CD (Continuous Deployment/Delivery):
• 지속적 배포: 테스트가 성공하면 코드를 자동으로 서버에 배포.
• 지속적 배포(Deployment): 운영 환경까지 자동 배포.
• 지속적 전달(Delivery): 운영 환경 배포는 수동으로 제어.
프로토콜(Protocol)
• 통신 규칙, 쉽게 말해, 컴퓨터들끼리 데이터를 주고받기 위해 약속된 규칙.
• 컴퓨터, 서버, 인터넷에서 서로 다른 장치가 어떻게 소통해야 하는지를 정해줍니다.
http, https 차이점
1. HTTP (HyperText Transfer Protocol)
• HTTP는 웹사이트와 브라우저 간에 데이터를 주고받는 데 사용되는 프로토콜 입니다.
• 웹 페이지를 열 때, 브라우저가 HTTP를 통해 서버에 요청(request)을 보내고, 서버는 데이터를 응답(response)합니다.
HTTP의 특징:
• 빠름: 단순히 요청과 응답을 주고받기 때문에 빠름.
• 보안 없음: 데이터를 암호화하지 않고 전송하기 때문에 중간에서 데이터가 탈취될 위험이 있음.
2. HTTPS (HTTP Secure)
• HTTPS는 HTTP에 “보안”이 추가된 버전이에요.
• 데이터를 주고받을 때, 암호화를 통해 제3자가 데이터를 볼 수 없게 보호합니다.
HTTPS의 특징:
• 보안 강화: 중간에서 누군가 데이터를 가로채도 내용을 해독할 수 없음.
• SSL/TLS 사용: HTTPS는 SSL/TLS 인증서를 사용해 데이터를 암호화.
프로토콜의 다른 예
1) FTP (File Transfer Protocol)
• 파일 전송을 위한 프로토콜.
• 컴퓨터 간에 파일을 주고받을 때 사용.
• 예: 웹 서버에 파일 업로드.
2) SMTP (Simple Mail Transfer Protocol)
• 이메일 전송을 위한 프로토콜.
• 이메일을 보내고 받을 때 사용.
3) TCP/IP (Transmission Control Protocol / Internet Protocol)
• 인터넷에서 데이터를 전송하기 위한 기본 프로토콜.
• TCP는 데이터 전송의 신뢰성을 보장하고, IP는 데이터가 정확한 주소로 가도록 관리.
TCP/IP와 HTTP의 역할 차이
TCP/IP란?
• **TCP/IP는 인터넷을 움직이는 “기본 통신 프로토콜”** 입니다.
• 인터넷이라는 길을 통해 데이터를 나르고 관리하는 역할을 합니다.
• 데이터가 어떤 방식으로 이동할지, 어디로 가야 할지(주소, 경로)를 정하는 규칙입니다.
HTTP란?
• HTTP는 TCP/IP 위에서 동작하는 프로토콜로, 웹에서 데이터를 주고받기 위한 규칙 입니다.
• HTTP는 TCP/IP를 이용해 데이터를 요청하고 응답합니다.
즉, HTTP는 TCP/IP를 기반으로 웹 브라우저와 웹 서버가 소통하는 데 특화된 언어 입니다.
HTTP와 TCP/IP의 위치
• **HTTP는 “응용 계층”**에서 동작하며, 사용자와 소통하기 위한 규칙.
• **TCP/IP는 “전송 계층과 인터넷 계층”**에서 데이터를 전송하고 경로를 관리.
HTTP가 TCP/IP를 사용하는 방법
1. HTTP 요청:
• 사용자가 브라우저에서 http://example.com을 입력하면, 브라우저가 HTTP 요청(Request)을 생성합니다.
2. TCP를 통해 데이터 전송:
• HTTP 요청 데이터는 TCP 프로토콜을 사용해 데이터 패킷으로 나뉘고, 순서대로 전송됩니다.
• TCP는 데이터가 손실 없이 도착하도록 신뢰성을 보장.
3. IP를 통해 경로 결정:
• TCP 데이터는 IP 프로토콜을 사용해 데이터가 올바른 목적지(서버)로 전송되도록 경로를 설정합니다.
4. HTTP 응답:
• 서버가 HTTP 요청을 처리한 후 응답(Response)을 생성하여 다시 TCP/IP를 통해 사용자에게 데이터를 전송합니다.
정리
• TCP/IP는 데이터 전송의 “기반 기술”:
• 데이터가 안전하고 신뢰성 있게 전송되도록 보장.
• 모든 종류의 데이터(HTTP, FTP, 이메일 등)에 사용 가능.
• HTTP는 웹 브라우저와 서버 간 통신을 위한 “특화된 규칙”:
• TCP/IP를 활용해 브라우저와 서버 간에 웹 페이지 요청 및 응답을 처리.
깃허브(Github)란?
인터넷에서 개발자들이 자신의 코드를 저장하고 다른 사람들과 공유하는 곳
1. 깃허브 가입하기
GitHub · Build and ship software on a single, collaborative platform
Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.
github.com
2. 저장소(Repository) 생성 : Repository 이름 작성 > Public 선택 > [Create repository] 버튼 클릭
3. 파일 업로드하고 상단 바에서(code, issues, pull requests ...) settings 클릭 > Pages 클릭
4. Branch name : main 설정 후 save > 몇 분후 주소 노출 확인(pages 화면에서)
5. 배포된 주소 확인
배포된 것 수정하기
1. 기존 html삭제 후, 코드 수정된 파일 재업로드 > commit changes 클릭
파이어베이스의 한계점
1. 단순 작업만 가능, 서버 제어가 제한 됨.
2. 구글 서비스에 의존적
파이썬(Python) 맛보기
1. Google Colab 이용해보기 (구글에서 제공하는 클라우드 기반 무료 파이썬 실행 환경)
https://colab.research.google.com
Google Colab
colab.research.google.com
2. 코드 입력 후 실행해보기 (ctrl + enter, 처음 실행 시 조금 시간이 걸림)
파이썬 스크랩핑 예제)
• requests: 웹 페이지의 HTML 내용을 가져오기 위해 사용합니다.
• BeautifulSoup: 가져온 HTML 내용을 파싱(Parsing)해서 원하는 데이터를 추출하기 위해 사용합니다.
• URL: 데이터를 크롤링할 웹 페이지 주소입니다. (축약된 주소이지만 실제 페이지로 연결됩니다.)
• headers: 서버에 요청할 때 사용하는 헤더 정보입니다. 웹 브라우저에서 접속하는 것처럼 가장하기 위해 User-Agent를 포함시킵니다. 이 부분은 웹사이트에서 크롤링을 차단하지 않도록 하기 위한 방법 중 하나입니다.
• requests.get: 지정된 URL로 HTTP GET 요청을 보내고, 서버에서 반환한 HTML 데이터를 data 변수에 저장합니다.
• headers: 이 요청에 포함되는 HTTP 헤더입니다.
• BeautifulSoup(data.content, 'html.parser'): requests로 가져온 HTML 데이터를 BeautifulSoup 라이브러리로 파싱(구문 분석)합니다.
• html.parser: HTML을 파싱할 때 사용하는 파서(Parser)입니다. BeautifulSoup이 HTML을 이해하고 다룰 수 있게 만들어줍니다.
• soup.select_one: CSS 선택자를 사용하여 HTML에서 특정 요소를 선택합니다.
> html 복사 시 : copy > copy selector 로 내용 복사

'코딩 > 웹개발' 카테고리의 다른 글
Firebase 시작하기 (0) | 2025.01.22 |
---|---|
Fetch 기초 (1) | 2025.01.22 |
JQuery 기초 (0) | 2025.01.21 |
HTML 기초 2 + Javascript 기초 (0) | 2025.01.20 |
HTML 기초 1 (0) | 2025.01.17 |