seaking110 님의 블로그
백엔드 개발자 필수 지식 본문
백엔드
- 역할 : 데이터 처리, 비즈니스 로직, 데이터베이스 관리 등 서버 측 작업 담당
- 클라이언트 요청을 처리하고 필요한 데이터를 반환, 특정 작업을 수행
- API 및 데이터 처리 결과 제공
클래스와 객체와 인스턴스의 차이
- 클래스 : 객체를 만들어 내기 위한 틀 객체의 속성과 메서드의 집합을 담아 놓은 것
- 객체 : 클래스로부터 만들어지는 실체, 클래스로 선언된 변수를 객체라 한다.
- 인스턴스 : 객체가 메모리에 할당이 된 상태, 런타임에 구동되는 객체
static
- 스태틱으로 선언된 변수, 블록, 메서드 등은 선언과 동시에 heap 영역이 아닌
cloude, 오프프레미스, 온프레미스
- 클라우드 : 내가 아닌 다른 회사의 공급자가 호스팅하고 인터넷을 통해 사용자에게 제공되는 인프라, 플랫폼 또는 소프트웨어를 말합니다.
- 이를 이용하면 자체 인프라나 하드웨어 설치 없이도 애플리케이션과 리소스를 쉽고 싸게 이용 가능
- 분산된 서버를 기반으로 작용하므로 서비스 운영에만 집중 가능하다.
- 이를 Off - premist 방식이라고 한다.
- On - premist 방식은 기업이나 개인이 자체 시설에서 보유하고 직접 유지 관리하는 프라이빗 데이터 센서(IDC)를 의미
Iaas , Pass, Saas
- Iaas : 인프라형 클라우드 서비스
- 클라우드가 단지 인프라를 제공
- Node.Js, MongeDB 등을 개발자가 직접 설치해야하나 특정 서비스에 종속되지 않는다.
- AWS의 EC2, NCP
- Pass 플랫폼형 클라우드 서비스
- 클라우드가 플랫폼 제공
- Node.Js 등 MongeDB 등이 설치되어있으며 그저 클릭을 통해 서비스를 이용 가능
- 모니터링 CI/CD가 제공 <- 배포
- Saas : 서비스형 클라우드 서비스
- 완전한 서비스를 클라우드서비스로부터 제공받아 사용
- ex 슬랙
Pass와 Iaas 비교
IaaS
- 유연하며 플랫폼에 종속되지 않습니다.
- 이식성이 높음
- 운영비 효율 낮음
PaaS
- 유연하지 않으며 플랫폼에 종속됩니다.
- 이식성은 낮음
- 운영비 효율 좋음
데이터 교환 형식 Json 직렬화 / 열 직렬화
JSON
- JavaScript Object Notation
- 자바 스크립트 객체 문법으로 구조화된 데이터 교환 형식
- 파이썬 자바 스크립트, 자바 등 여러 언어에서 데이터 교환 형식으로 쓰이며 객체 문법말고도 단순 배열, 문자열도 표현 가능
- 키 값과 밸류 값으로 구성
Json 직렬화 / 열 직렬화
- 직렬화란
- 외부의 시스템에서도 사용할 수 있도록 바이트 형태로 데이터를 변환
- 역직렬화
- 바이트 형태의 데이터를 내부에서 사용할 수 있도록 데이터를 변환
- Ex ) JSON.parse() 역직렬화 , JSON.stringify() 직렬화
JSON 의 활용
JSON은 프로그래밍 언어와 프레임워크 등에 독립적이므로, 서로 다른 시스템간에 데이터를 교환하기에 좋습니다. 주로 API의 반환형태, 시스템을 구성하는 설정파일에 활용됩니다.
API 개념
- 둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층을 의미
- 어떻게 통신할 것인지 어떠한 데이터를 주고 받을 건지 등에 대한 방법이 정의된 중계 계층을 말함
- WEB API, Web Socket APO 등이 있는데 보통 WEB API를 기준으로 설명
인터페이스
- 서로 다른 두개의 시스템 장치 사이에서 정보나 신호를 주고 받는 경우의 접점이나 경계면
- 이를 통해 해당 컴퓨터의 내부 서버가 어떻게 구현되어있는지에 상관없이 통신이 가능
API 작동 방식
- 사용자가 브라우저를 통해 서버에 요청을 하게 되면 API가 중계 계층 역할을 하며 요청을 처리
- 직접 서버의 데이터베이스에 접근 하는 것을 방지
API의 장점
- 제공자는 서비스의 중요한 부분을 드러내지 않아도 됨
- 사용자는 해당 서비스가 어떻게 구현되는지 알 필요 없이 필요한 정보만을 받을 수 있음
- OPEN API의 경우 앱 개발 프로세스를 단순화 시키고 시간과 비용을 절약
- 내부 프로세스가 수정되었을 때 API를 매번 수정하는 것이 아닌 API가 수정이 안되게 만들 수 있다.
- 이를 통해 내부 DB, 서버의 로직이 변경되어도 매번 사용자가 앱을 업데이트 하는 일은 줄어들 수 있습니다.
- 제공자는 데이터를 한곳에 모을 수 있다.
API 종류
- private : 내부적으로 사용 주로 해시키를 하드코딩해놓고 이를 기반으로 서버와 서버간의 통신
- public : 모든 사람이 사용, 많은 트래픽을 방지하기 위해 하루 요청 수의 제한, 계정당 몇개 등 관리 ex open API
네트워크
- HTTP
- 처음에는 서버와 브라우저 간에 데이터를 주고 받기 위해 설계된 프로토콜이나 지금은 서버와 서버간의 통신에도 많이 이용
- HTTP는 헤더를 통한 확장이 쉽다.
- HTTP는 stateless : 동일한 연결에서 연속적으로 수행되는 두 요청 사이에 연속적인 상태 값은 없다. 즉 HTTP는 독립적
SSH
- 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
- 보통 프라이빗 키가 잇는 경로에서 이런식으로 키를 명시하고 실행
- HTTP 보다 조금 더 보안적으로 강함
사용해보면 좋을 기술 스택
Redis
- Redis는 키-값 저장소로, 데이터를 메모리에 저장해 빠른 속도를 제공합니다.
- 주 사용 사례: 캐시, 세션 관리, 실시간 처리(랭킹, 메시징 시스템).
- 특징: Pub/Sub 메시징, 데이터 영속성 지원(옵션).
Docker
- Docker는 애플리케이션과 그 환경을 컨테이너라는 패키지로 묶어주는 플랫폼입니다.
- 특징: 어디서든 동일한 환경에서 실행 가능.
- 주 사용 사례: 배포 자동화, 마이크로서비스 관리.
- 예: 웹 서버, DB 등을 컨테이너화하여 빠르게 배포.
Kafka
- Apache Kafka는 분산 메시지 큐 시스템으로, 실시간 데이터 스트리밍을 처리합니다.
- 주 사용 사례: 이벤트 처리, 로그 분석, 실시간 데이터 처리.
- 특징: 대량의 데이터를 빠르고 안정적으로 처리하며, 생산자-소비자 모델 기반.
Prometheus
- Prometheus는 오픈소스 모니터링 및 경고 시스템입니다.
- 주 사용 사례: 서버, 컨테이너, 애플리케이션의 상태 및 성능을 모니터링.
- 특징: 시계열 데이터 저장소, 경고 기능, Grafana와 자주 연동.
CI/CD
- CI/CD (Continuous Integration/Continuous Deployment)는 코드 자동화를 위한 프로세스입니다.
- CI: 코드 변경 사항을 자동으로 테스트 및 빌드.
- CD: 빌드된 코드를 자동으로 서버에 배포.
- 예: GitHub Actions, Jenkins 등 사용.
'Today I Learned' 카테고리의 다른 글
| Spring 3 Layered (0) | 2025.01.22 |
|---|---|
| Spring 입문! (0) | 2025.01.22 |
| 키오스크 과제 트러블 슈팅 (0) | 2025.01.20 |
| Enum과 Stream (0) | 2025.01.17 |
| 분할 정복을 이용한 거듭제곱 (0) | 2025.01.16 |