ASAC/복습 내용정리

[ASAC 7기] 웹 개발 백엔드 : 운영체제, 서버, 배포방법론

웡지 2024. 12. 12. 20:50

본 포스팅은 수업내용의 단순 정리글입니다. (작성중)

 

02-20. 웹 개발이란 무엇이며, 어떻게 동작하나? 백엔드 편

 

이번 포스팅에서는 

 

 

 

 

01. 백엔드 개발자가 갖춰야 하는 역량은 무엇일까?

02-21. 백엔드 웹 개발이란 : 클라이언트가 필요하는 데이터를 반환하는 API

 

무엇을 배웠는가?

백엔드 개발자는 단순히 API싸개만 개발하는 개발자가 아니다. 백엔드 개발자는 요청<->응답을 처리하는 방법론들을 알아야 하고, 그에는 REST API, Graph QL, Queue, WebSocket, SSE 등이 있다. 또한 요청<-> 응답의 속도 및 대량 트래픽를 커버할 수 있는 능력도 길러야 한다. 

 

1) 데이터 관리 = 데이터에 대한 모든 것 CRUD

  • 직렬화: 웹 서버에서 웹클라이언트로 응답하는 것 / Java 객체(2차원) → HTTP Response Body JSON(1차원, String) 
  • 역직렬화: 웹 클라이언트에서 웹서버로 요청하는 것 / HTTP Request Body JSON(1차원, String) → Java 객체(2차원)

 

 

02.  웹 어플리케이션 프레임워크에 대해 알아보자. 

02-22. 웹 어플리케이션 프레임워크 등장과 원리 : 웹 서버 개발에 필요한 모든걸 제공

 

무엇을 배웠는가?

백엔드 웹 어플리케이션 프레임워크에는 어떤 종류가 있는지, 어떤 역할을 하는지 알아보았다. 

 

1) 백엔드 웹 프레임워크란 ?

서버에서 요청을 처리하고 데이터를 관리하는 역할.

  • 예시:
    • Django (Python)
    • Spring Boot (Java)
    • Express.js (Node.js)
    • Ruby on Rails (Ruby)
    • Laravel (PHP)
  • 주요 기능: 라우팅, 데이터베이스 작업, 인증, 비즈니스 로직 처리 등.

 

2) 웹 어플리케이션 프레임워크가 제공하는 기능

  • RequestMapping : 어떤 요청에 따라 어떤 메서드(함수 혹은 로직)을 수행할것인지
  • Thread 관리 : 요청을 처리하기 위한 Thread 할당 및 관리, 데이터베이스 접속을 위한 Thread 할당 및 관리
  • 데이터베이스 동시성 제어 : 대량 트래픽 발생 시 데이터베이스 조작에 대한 각 요청들 간의 동시성 제어
  • Serialization직렬화 / Deserialization역직렬화 : 요청, 응답 시 어플리케이션의 객체와 클라이언트의 JSON 사이 변환
  • Security : CORS 규칙 등에 대한 보안 관련 정의 및 처리
  • Authentication인증 / Authorization인가 : 매 요청마다 해당 요청이 권한에 맞게 요청한건지 보안 처리

 

3) 라이브러리와 프레임워크

  • 라이브러리 : 단일 문제 해결을 위한 단일 도구 = “뭐가 필요해? 자, 이거 가져가”
  • 프레임워크 : 다수 문제 해결을 위한 도구 집합 = “네가 뭘 좋아할지 몰라서, 모든걸 다 준비했어”
    • 다수의 라이브러리 제공 : 개발에 필요한 라이브러리들을 한데 묶어, 개발 편의성 제공
    • 다수의 인터페이스 제공 : 개발을 위한 껍데기를 제공할뿐 필요한것은 직접 구현 혹은 라이브러리 교체

 

4) 웹 어플리케이션 프레임워크 동작 원리

  • 라이브러리에 대한 버전 관리를 위한 Package Manager 가 필요
    • Javascript 는 npm 사용
    • Python 은 pip 사용
    • Ruby 는 bundler 사용
    • Java 는 Maven 혹은 Gradle 사용
  • Database : 데이터 조회 및 조작
  • Transaction : 대량 트래픽이나, 다수 요청이 데이터베이스에 접근 → 동시성 제어

 

 

 

03.  서버가 동작되는 운영체제에 대해서 알아보자. 

02-23. 운영체제 개요 및 프로그램(어플리케이션) 동작 원리

 

무엇을 배웠는가?

운영체제 OS는 응용 소프트웨어에게 하드웨어를 제공하기 위해 존재하며 커널은 유저가 커널을 직접 다루기는 어렵기 때문에 응용소프트웨어로 간편한 제어 및 사용이 제공된다. 프로세스와 스레드에 대해 배웠고 데몬이란 백그라운드에서 실행되는 프로그램 또는 프로세스를 말한다. 컴파일은 자바코드, C코드가 각각 바이트코드, 바이너리코드로 변환되는 것을 말하며, 인터프리팅은 바이트코드가 바이너리 코드로 변환되는 것을 말한다. 

Java 언어는 컴파일 단계에서 단일 바이트코드 생성 후 JVM 이 머신에 맞추어 기계어로 인터프리팅 후 실행

 

 

 

 

04.  연속성 Non-Blocking 과 동시성 Asynchronous

02-24. 연속성 Non-Blocking 과 동시성 Asynchronous

 

무엇을 배웠는가?

 

 

 

 

05.  물리서버와 클라우드 서버에 대해 알아보자

02-25. Infrastructure : 서버는 어떻게 구성할까? 물리 서버 vs 클라우드 서버

 

무엇을 배웠는가?

 

 

 

 

 

06.  Load Balaner : 대량 트래픽에 의한 서버 부담 분산

02-26. Load Balancer : 대량 트래픽에 의한 서버 부담을 어떻게 분산할까

 

무엇을 배웠는가?

 

 

 

 

 

07.  다양한 배포 방법에 대해 알아보자. (안정성 , 가용성 관점에서)

02-27. 다수 트래픽에 대한 안정성/가용성(SRE)을 위한 다양한 배포 방법

 

무엇을 배웠는가?

 

 

 

 

 

 

 

 

 

 

 

작성중