공부블로그

기술스택 공부 with.chat GPT 본문

공부하기

기술스택 공부 with.chat GPT

떠어영 2024. 2. 16. 00:02

우선, 웹 개발에서 사용되는 전형적인 기술 스택에 대해 알아보자.

  1. 프론트엔드(클라이언트 측):
    • HTML(HyperText Markup Language): 웹 페이지의 구조를 정의하는 마크업 언어입니다.
    • CSS(Cascading Style Sheets): 웹 페이지의 스타일을 정의하는 스타일 시트 언어입니다.
    • JavaScript: 웹 페이지의 동적인 동작을 제어하고 사용자와 상호 작용하는 프로그래밍 언어입니다.
    • 프레임워크 및 라이브러리: Vue.js(Nuxt.js), React.js(Next.js), Angular 등의 프론트엔드 프레임워크 및 라이브러리를 사용하여 웹 애플리케이션을 개발합니다.
  2. 백엔드(서버 측):
    • 웹 서버: 클라이언트 요청을 받아들이고 응답하는 소프트웨어입니다. 예를 들어, Node.js, Apache, Nginx 등이 사용됩니다.
    • 언어 및 프레임워크: JavaScript(Node.js), Python(Django, Flask), Ruby on Rails, Java(Spring), PHP(Laravel) 등의 언어와 프레임워크를 사용하여 백엔드 로직을 구현합니다.
    • 데이터베이스: 사용자 데이터, 애플리케이션 데이터 등을 저장하고 관리하는 데 사용됩니다. 예를 들어, MySQL, PostgreSQL, MongoDB 등이 사용됩니다.
    • API(웹 서비스): 클라이언트와 서버 간의 통신을 위한 인터페이스입니다. RESTful API, GraphQL 등의 방식으로 구현됩니다.
  3. 개발 및 배포 도구:
    • IDE(Integrated Development Environment): 개발을 위한 통합 개발 환경으로서, Visual Studio Code, Atom, Sublime Text 등이 있습니다.
    • 버전 관리 시스템: 코드의 변경 내역을 관리하고 추적하기 위해 Git을 주로 사용합니다.
    • 협업 도구: 여러 개발자들 간의 협업을 위해 GitHub, GitLab, Bitbucket 등을 사용합니다.
    • 배포 도구: 애플리케이션을 서버에 배포하고 관리하기 위해 Docker, Kubernetes, AWS 등을 사용합니다.

일반적으로 프론트에서의 스택변경은 프레임워크의 변경을 말하는 경우가 많고, 백엔드는 정말 잘 모르지만 4가지 모두 변경 가능성이 높은 것 같다. ( 아마 프론트는 js기반 언어를 쓰는 경우가 대부분이라 언어의 변경이 적은 것 같고, 백엔드는 언어부터 서버, DB까지 장단점이 다르기 때문에 그럴지도..? )

 

 

보통의 웹 서비스는 클라이언트(브라우저) > 웹서버 > WAS > DB 순으로 이루어져 있다.

 

웹서버: 클라이언트 요청에 따라 HTML, CSS, JS, 이미지 파일과 같은 정적 파일을 응답하여 제공하는 소프트웨어, HTTP프로토콜을 사용해 클라이언트와 통신한다. 웹서버의 한 종류가 NginX이다.

 

WAS(web application server): 클라이언트 요청에 대한 동적인 처리를 담당하는 영역. 예를 들어 회원가입이나 로그인 등의 로직을 처리하거나 데이터베이스 연동, 트랜젝션 관리, 보안, 로깅 등의 기능을 제공한다. Node.js는 웹서버 또는 WAS로도 사용할 수 있다.

 

+ 개발을 위해 미리 정의된 가상의 데이터나 응답을 제공하는 모의(mock)서버를 사용할 수도 있다!

 

API: 클라이언트와 서버 간의 상호 작용을 표준화하고 효율화하기 위한 규약

  • RESTful API: HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 클라이언트가 리소스( 접근할 대상 ex. 서버의 endpoint경로 )에 대한 요청을 보내고 서버는 해당 요청에 대한 응답을 제공한다.
  • GraphQL: 페이스북에서 만드 쿼리 언어. RESTful API에서는 서버가 사전에 정의된 엔드포인트를 통해 데이터를 제공해서 종종 클라이언트에게 필요한 데이터보다 많거나 적은 경우가  있다. 이와 달리 GraphQL에서는 클라이언트가 정확히 원하는 데이터를 쿼리로 지정할 수 있다. 이를 통해 불필요한 데이터를 전송하지 않고 필요한 데이터만을 효율적으로 가져올 수 있다.

배포도구

  • Docker: 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼. 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는데 필요한 모든 것이 포함된다.

 

 

다음 포스팅은 CSR, SSR에 대해서....