본문 바로가기

모카 스터디/웹 지식

백엔드 로드맵

 

로드맵 개요

인터넷과 HTTP

 

인터넷은 서로 정보를 주고받을 수 있도록 한 거대한 네트워크이다.

네트워크 : 여러대의 컴퓨터가 서로 통신을 한다.

 

 

라우터를 활용한 네트워크의 확장

 

 

웹소켓

버전 컨트롤

git : 분상형 버전 관리 시스템 

 

 

Git Hub : 깃 기반의 호스팅 서비스

 

 

GitAction : 코드 저장소에 어떤 이벤트가 일어날때 특정 작업이 일어나게 하거나  주기적으로 어떤 작업들을 반복시켜서 실행하고 싶은 경우에 사용

 

 

 

개발언어

Java : 정적 타입에 JVM위에서 돌아간다.

 

 

 

Javacript /Typescript : 웹기반 언어이지만 요즘은 서버에서도 돌아간다.

 

 

 

 

Python : 

 

 

 

 

데이터표현법(JSON,YAML)

json(java script object notation) : 데이터 표현법 

 

 

 

yaml

json은 주석을 넣을수 없지만 yaml은 주석을 넣을 수 있다.

 

 

 

 

 

리눅스 명령어

 시스템프로그래밍 포스팅에 기재 완. 생략

 

 

 

 

 

웹서버(리버스 프록시)

클라이언트와 에플리케이션 서버 중간에 위치한 서버를 웹서버라고 한다.

ex) nginx, iis, apache

 

요즘 유명한 쿠버네티스의 ingress가 nginx로 되어있다.

 

 

 

 

인증(authentication)과 인가(authorization)

 

 

프레임워크

 

express는 최소한의 코어를 잡은채 확장해 나가는 프레임워크고

nestjs는 아키텍쳐와 구조를 잡아주는 프레임 워크다.

데코레이터를 사용해 추가적인 미들웨어나 설정 파일을 두지 않아도 된다.

 

 

 

파이썬에는 장고가 가장 유명하지만 api만 작성하려면 fast api 가 나은것 같다.

 

 

 

 

 

 

데이터베이스

 

데이터 베이스에서는 크게 RDB와 NoSQL로 나누어 진다.

성능에 큰 중요점을 두지않다면 RDB로 충부하지만 분산서버를 생각해야 된다면 NoSQL를 고려해야한다.

즉, NoSQL을 사용해 성능을 높일 수 있다.,

 

레디스는 키 벨류 기반의 NoSQL 데이터 베이스 이다.주로 분산 캐시로 많이 사용한다.

 

 

ORM: 클래스가 오브젝트와 테이블의 관계를 클래스로 가져올 수 있도록 해준다. 

            특정 메소드를 사용하면 실행시에 쿼리 생성을 하거나 쿼리를 실행해준다.

           즉, 쿼리 사용 없이 디비조작이 가능하며 직관적으로 디비 관리가 가능하다.

 

N+1 문제 : 클래스의 모델에 다른 클래스의 관계를 설정하고 해당 클래스의 조회를 할때 

                  데이터의 갯수만큼 쿼리가 발생하는것을 말한다.

                  즉, 불필요한 쿼리를 발생한다.

 

 

API에 대하여

 

제이슨 형태로 생긴 쿼리 언어

 

rest의 경우 서버가 쿼리를 디비에 날려서 데이터를 가져온다.

graphql은 클라이언트가 서버에 쿼리를 날리는 개념이다.

 

rest api의 경우 url을 각각 만들어 줘야한다. 하지만 GRAPQL의 경우 엔드포인트가 하나이다.

 

보통은 둘다 사용한다.

배치처리

배치처리 : 일정량의 데이터를 모아 두었다가 대량의 데이터 작업을 한번에 하는거을 말한다.

                또는 일정 시간마다 주기적으로 실행해야 하는 작업을 말한다.

               개발적으로 말하면 스케쥴링을 해서 작업을 처리한다.

 

배치 처리를 하는 가장 간단한 방법은 OS의 스케줄링 기능을 사용하는 것입니다.

EX) 리눅스의 crontab

젠킨스

빌드 유발 메뉴의 빌드 패리어디컬리 : 주기적으로 빌드한다. 거기에 스케쥴을 추가하고 build에 쉘 같은 실행할 수 있는 명령을 넣어준다.

 

 

 

배포하기

배포 도구가 없다면 ftp를 사용해서 수작업으로 압축 파일을 만들고 서버로 업로드를 해야한다.

하지만 이렇게 하면 실수가 매우 잦아 지기 떄문에 도구를 사용해야한다.

 

엔트나 ansible같은 스크립트를 써서 배포 할수도 있다.

 

스크립트를 실행해주는 도구를 사용할 수도 있다. ex) 젠킨스,  깃헙 액션

 

CI는 배포전의 과정  

CD는 배포의 고도화

 

더 알아보기