분류 전체보기 258

Vercel이란? - Next.js 배포에 최적화된 프론트엔드 플랫폼

프론트엔드 개발에서 배포는 필수적인 과정이다. 특히 Next.js로 프로젝트를 개발한 경우, 이를 안정적으로 운영 환경에 올리는 방법에 대해 고민하게 된다. 이때 가장 자연스럽게 사용되는 플랫폼이 Vercel이다. Vercel이란?Vercel은 Next.js의 창시자가 만든 클라우드 플랫폼이다. 프론트엔드 프로젝트의 빌드, 배포, CDN 전송을 자동으로 처리해주며, 특히 NExt.js에 최적화되어 있다.Next.js를 만든 팀이 직접 만든 만큼, 최신 기능과 호환성이 뛰어나다. 주요 특징1. 자동 배포 (CI/CD 지원)GitHub, GitLab, Bitbucket등과 연동하면, 코드 푸시만으로 자동으로 배포가 진행된다.main 브랜치는 프로덕션으로 배포되고, 그 외 브랜치는 미리보기 링크가 생성된다. ..

Next.js란 무엇인가?

Next.js는 React로 웹 애플리케이션을 개발할 수 있게 해주는 프레임워크이다. 기본적으로 React 위에서 동작하며, 서버 사이드 렌더링(SSR), 정적 사이트 생성(SSG), 라우팅, 이미지 최적화, API 서버 기능 등 다양한 웹 개발 기능을 포함하고 있다. 1. React 기반 프레임워크Next.js는 React의 기능을 그대로 활용하면서도, React만으로 만들기엔 번거로운 기능들을 기본 제공한다.예를 들어, 라우팅 설정, 코드 스플리팅, 데이터 패칭 방식 통일, SEO 최적화 등을 쉽게 처리할 수 있다. 2. 다양한 렌더링 방식 지원Next.js는 페이지를 어떻게 렌더링할지 선택할 수 있다. 주요 방식은 다음과 같다.- SSG (Static Site Generation): 정적 HTML을..

파이썬 가상환경 venv, 왜 써야할까?

파이썬을 쓰다 보면 프로젝트마다 필요한 패키지나 버전이 제각각인 경우가 많다.예를 들어 A 프로젝트는 Django 3.2를, B프로젝트는 Django 4.2를 써야 하는 상황.이때 전역 환경에서 설치하면 서로 충돌이 날 수 밖에 없다. 그래서 필요한게 바로 가상환경(Virtual Environment)이다.파이썬에서는 기본적으로 venv 라는 도구를 통해 가상환경을 만들 수 있다. venv란?venv는 프로젝트별 독립적인 파이썬 실행 환경을 만들어주는 기능이다.같은 PC 안에서도 각각의 프로젝트가 서로 다른 패키지를 자유롭게 사용할 수 있도록 해준다. 왜 써야 할까?패키지 충돌 방지: 프로젝트마다 다른 버전의 패키지를 사용할 수 있음전역 환경 보호: 시스템 파이썬 환경이 오염되지 않음협업 및 배포 용이..

Language/Python 2025.05.22

DNS란 무엇인가? 인터넷의 주소를 번역하는 시스템

DNS의 정의DNS(Domain Name System)은 인터넷에서 사용하는 도메인 이름을 IP 주소로 변환하는 시스템이다.우리가 naver.com 이나 tistory.com 같은 주소를 입력했을 때, 실제 통신은 이 도메인에 해당하는 IP주소로 이루어진다.DNS는 이 중간 과정을 처리하는 역할을 한다. 왜 필요한가?컴퓨터는 문자열 형태의 도메인 이름을 이해하지 못한다.인터넷 통신은 결국 숫자로 이루어진 IP 주소를 통해 이루어지며, DNS는 이 IP를 자동으로 찾아주는 주소 변환기 역할을 한다. 예를 들어 사용자가 웹 브라우저에 naver.com 을 입력하면, 시스템은 다음과 같은 과정을 거친다.naver.com → DNS 서버에게 질의DNS 서버가 해당 도메인에 대한 IP 주소 반환해당 IP로 HT..

Server 2025.05.21

[Ubuntu 18.04] 웹 크롤링 중 getaddrinfo EAI_AGAIN 에러 발생, DNS관련 이슈 해결기

문제 상황최근 Node.js 기반으로 cheerio 를 사용해 티스토리 게시글을 크롤링하는 스크립트를 작성했다.로컬 PC에서는 잘 작동했지만, 운영환경(AWS EC2, Ubuntu 18.04) 에서는 다음과 같은 에러가 발생했다. 해당 URL은 정상적인 티스토리 블로그 주소였고, 로컬에선 문제없이 동작했기에 더욱 당황스러웠다. 원인 분석EAI_AGAIN 은 Node.js 내부의 getaddrinfo 호출에서 발생하는 에러로, 보통 DNS* 조회 실패를 의미한다.(DNS에 대해서 궁금하다면 관련포스팅을 참고하자.) 운영 서버에서 다음 명령어로 테스트해봤다.curl https://티스토리주소.tistory.comnslookup tistory.com 그러나 둘 다 실패했다. 즉, 서버 자체가 외부 DNS를 ..

Server 2025.05.21

[Python3] 폐쇄망 환경에서 Python 패키지 설치하는법

망 분리 환경에서는 pip install 명령어로 인터넷에서 직접 패키지를 설치할 수 없기 때문에,외부망에서 필요한 패키지를 미리 다운로드한 뒤 내부망으로 옮겨 설치하는 방식이 필요하다. 이 포스팅을 통해 pip를 활용하여 의존성까지 포함한 오프라인 설치 과정을 설명한다. [실행 환경]Python 3.11 version1. 외부망 PC에서 패키지 및 의존성 다운로드먼저 인터넷 연결이 가능한 외부망 PC에서 pip download 명령어를 사용하여 패키지를 다운로드한다. 예시: pyinstaller 다운로드pip download pyinstaller -d ./offline_packages 위 명령어를 실행하면 offline_packages/ 폴더 내에 다음과 같은 파일들이 생성된다offline_packa..

Language/Python 2025.04.21

Ubuntu 18.04에서 PostgreSQL DB 백업 스케쥴러 구축하기

이 포스팅에서는 PostgreSQL 14.2를 사용하는 Ubuntu 18.04 서버에서 작동 백업 스케쥴러를 구축하는 방법에 대해 설명하려고 한다. 매일 자정마다 pg_dump를 이용해 DB 백업을 수행하고, 백업 파일은 별도의 폴더에 저장하며, 30일이 지난 백업은 자동으로 삭제하도록 구성할 예정이다.  1. 준비 사항운영체제: Ubuntu 18.04PostgreSQL 버전: 14.2백업 도구: pg_dump스케줄러: cron백업 경로: /home/ubuntu/pg_backups (백업 파일은 이 경로 내의 backups 폴더에 저장)또한, 백업 작업을 진행하기 전에 데이터베이스 접속 정보를 정확히 확인하고, 필요한 경우 DBeaver 등을 통해 DB 이름과 사용자 정보를 점검해야 한다.  2. 백업 ..

DataBase 2025.03.22

클라우드 컴퓨팅의 이해와 차별점

1. 클라우드의 개념클라우드 컴퓨팅은 물리적 하드웨어 자원을 가상화하여 네트워크를 통해 온디맨드로 제공하는 서비스이다. 사용자는 필요할 때마다 컴퓨팅 리소스를 할당받을 수 있으며, 이는 자동화된 자원 관리, 확장성, 고가용성 등의 특징을 가진다. 클라우드 서비스는 인프라스트럭처(IaaS), 플랫폼(PaaS), 소프트웨어(SaaS) 등 다양한 형태로 제공된다.  2. 일반적인 가상화와의 차별점일반적인 가상화는 단일 하드웨어 상에서 여러 개의 가상 머신(VM)을 운영하는 기술이다. 예를 들어, 한 대의 PC에서 여러 VM을 띄워 자원을 분할하는 것은 가상화의 한 예이다. 그러나 클라우드 컴퓨팅은 단순히 가상 머신을 띄우는 것을 넘어 다음과 같은 요소를 포함한다. - 자원 폴링: 여러 물리적 서버의 자원을 하..

Cloud 2025.03.13

Git Commit 메시지 작성 규칙

Git 커밋 메시지는 명확하고 일관된 규칙을 따르는 것이 중요하다. 잘 작성된 커밋 메시지는 프로젝트 관리와 협업을 더욱 효율적으로 만들어 준다. 이 포스팅에서는 Git 커밋 메시지를 작성하는 기본 규칙과 유형별 예제를 정리한다.  1. Git Commit 메시지 작성 규칙1) 첫 줄은 요약 (제목) 으로 짧고 간결하게 작성한다.- 변경 사항을 한 문장으로 요약한다.- 문장의 첫 단어는 동사 원형(현재형)을 사용한다. (Add, Fix, Update 등)- 끝에 마침표( . ) 를 사용하지 않는다. 2) 필요하면 본문을 추가한다.- 변경 사항에 대한 추가 설명이 필요한 경우 한 줄 띄운 후 작성한다.- 변경 이유, 영향을 받는 기능, 참고할 이슈 등을 포함할 수 있다. 3) 관련 이슈 번호를 포함하는 것..

Git 2025.03.08

Python 패키지 관리 - requirements.txt 활용 및 패키지 일괄 삭제

[환경]- Python 버전: 3.11- pip 버전: 22.3 Python 프로젝트를 진행하다 보면 패키지 관리를 효율적으로 해야 할 필요가 있다. 특히 여려 환경에서 같은 패키지를 설치하거나, 불필요한 패키지를 한 번에 삭제해야 하는 경우가 생긴다. 이에 대한 간단한 방법을 정리해본다.   1. 패키지 정보 저장 및 다른 환경에서 설치Python 프로젝트에서 일반적으로 패키지 정보를 저장하는 방식으로 requirements.txt를 많이 활용한다. 1) 패키지 목록 저장하기현재 설치된 패키지 목록을 requirements.txt 파일로 저장하려면 다음 명령어를 실행한다.pip freeze > requirements.txt(이 명령어에서 pip freeze는 현재 Python 환경에 설치된 모든 패키지..

Language/Python 2025.03.08
반응형