미경이 unit 모임 -333

코변·2022년 9월 18일
0

미경이 팀원 3명(나 포함)과 3시에 모여 3시간 동안 같이 cs질문을 정해 같이 써보는 시간을 가졌다.

  1. JWT토큰 - Session
  • 상태
    • jwt토큰은 유저의 인증 인가와 관련된 상태를 저장하지 않는다.
    • 세션은 저장을 한다. → 해킹상황에 대비하여 유저의 연결을 강제로 끊는다거나 유저에게 제제를 가하기 쉽다.
  • 보안
    • JWT토큰은 쿠키에 값을 저장하지 않기 때문에 중간 탈취의 위험이 세션에 비해 덜하다.
    • 세션id를 통해서 얻을 수 있는 정보는 없으나 세션id를 활용해 로그인한척 활동할 수는 있다.
  • 단점
    • jwt → 로그인된 상태의 유저를 컨트롤할 수단이 없다. → 보안을 위해서는 결국 장점인 stateless를 버려야 한다.
    • 서버 분산환경에서 세션정보가 없는 서버에 접속할 때 새로 로그인을 해주어야 한다. (redis로 극복은 가능)
  1. DRF - Django
  • Django
    • Django는 프런트와 백엔드 한꺼번에 빠르게 구현할 수 있는 프레임워크다.
    • DB를 제어하기 위해서 SQL문을, 프런트를 제어하기 위해서 javascript를 깊게 파헤칠 필요가 없다.
    • 그러나 MTV의 특성상 View 단에 많은 코드가 몰리고 백엔드와 프런트엔드로 구분하여 책임을 분산하려는 요즘 추세와는 동떨어져 있다.
    • 다양한 어플리케이션 상황에 적용하기에 적합하지 않다.
  • DRF
    • Django의 장점을 최대한 활용하면서 단점은 극복할 수 있도록 만든 프레임워크라고 생각한다.
    • Backend solid 서버를 구축할 수 있고 RESTful API의 개발이 가능하다.
    • 백엔드만 따로 분리해서 개발할 수 있기 때문에 다양한 어플리케이션의 백엔드 서버로도 사용이 가능하다.
    • 단점은 시리얼라이저에서 발생하는 속도 저하 이슈 및 async await 지원을 하지 않는다.

3.RESTful 하다는게 무슨 의미인지

REST란 웹을 위한 아키텍처 스타일(제약조건의 집합)이다.
이 REST를 따르는 API가 RESTful API이다.
무상태성, 캐시가 가능, 계층형 시스템 등등 많은 제약들이 있지만 이 제약들은 대체로 http 프로토콜을 따르면 만족이 된다. 따라서 uniform interface만 지키면 즉, uri만으로 충분히 설명이 가능하게(self descriptive) 만든다면 RESTful API를 만들 수 있다.
만약 유저의 데이터를 얻고 싶다면 /유저s 에 접근해서 그 데이터를 얻고 그 데이터 중에서 특정 유저의 정보를 얻고싶다면 users/1 로 그 정보를 가져올 수 있고 users/1/accounts 를 통해서 그 유저의 계좌정보를 가져올 수 있다.

4.디자인 패턴 공부 하셨나요? (스트래티지, 싱글턴, MVC, 어댑터, 컴퍼지트 프록시)
최근에 fastAPI를 공부하며 서버를 만들고 있는데 폴더 구조, 백엔드 코드 설계면에서 벽에 부딪혔다. 장고가 알아서 패턴을 생성해주던 때와는 다르게 리더블한 코드를 위해서는 패턴 공부를 해야하겠다고 생각했고 헤드퍼스트 디자인이라는 책을 사서 공부중이다.

5.ORM이 무엇인가?

개발자가 다루는 데이터들과 SQL은 동 떨어져 있다고 생각한다. 적혀있는 sql만 보고 어떤 데이터를 주고 받는지 직관적으로 알기란 쉽지가 않다. 이를 극복하기 위해서 ORM은 관계형 DB 와 개발자에게 친숙한 class를 매핑하여 클래스의 함수를 통해 관계형DB에 대신 질의를 해주어 데이터의 흐름을 직관적으로 이해할 수 있도록 돕는다.

6.SQL 쓸 줄 알아요?

백엔드 최적화 과정에서 ORM으로 작성한 코드가 어떤 sql을 보내는 지 확인했고 더 나은 백엔드 개발자가 되기 위해서는 sql을 알아야 한다고 생각해서 프로그래머스에 있는 sql문제도 풀어보고 실제 프로젝트에 적용을 해보고 있습니다.

7.DB왜 썼는가?

mysql은 일단 레퍼런스가 많고 python 에는 pymysql이라는 편리한 패키지가 있기에 접근성이 높다고 생각해서 mysql을 선택해서 사용했습니다. 그러나 postgresql이 더 높은 호환성을 지닌다고 들어 최근 프로젝트에는 postgres를 써보고 있습니다.

8.Docker에 대해 간단히 설명

  • 도커란 컨테이너를 관리하는 도구이다.
  • 사용하고 싶은 기술과 종속성, 작성한 코드들을 이미지에 담아 빌드하고 그 이미지들을 실행하기 위한 컨테이너에 담아 외부와 완전히 분리된 하나의 가상공간을 만드는 기술
  • 기존의 가상머신이 os자원을 위해서 많은 자원을 가져다 썼다면 도커는 image를 실행하기 위한 최소한의 자원만을 사용하기 때문에 상대적으로 가볍게 분리된 환경을 만들 수 있다.
  • 도커 덕에 작성된 코드와 종속성에 대한 설명 없이도 빌드된 이미지만 주고 받거나 혹은 docker헙을 통해 다운받아 사용할 수 있다.

9.RDBMS 와 NO-SQL 차이

  • 관계성
    • RDBMS는 테이블의 관계를 통해 데이터를 유추할 수 있도록 했다면 No-SQL은 주로 key-value값으로 데이터를 저장해 빠른 속도와 많은 양의 데이터를 저장할 수 있도록 했다.
  • 활용도
    • RDBMS는 데이터베이스로써의 역할에 충실하다면 No-SQL은 자유롭다. 검색도구로써 사용한 Elastic Search, 메모리 데이터베이스로 사용한 Redis등 다양한 형태를 지닌다.
  • 설계
    • 어떤 db를 쓰던간에 설계는 중요하지만 서로간의 관계만 잘 정의하면 되는 RDBMS보다 No-SQL에서의 설계가 더욱 중요하다고 생각한다.
  • 안정성
    • RDBM는 트랜잭션을 지원해 데이터의 안정성을 보장한다.
    • 그러나 no-sql은 트랜잭션을 지원하지 않는다.

10.Django의 장점

Django는 요리의 재료를 기본적으로 갖추어주는 요리수업처럼 기본적으로 웹페이지가 갖추어야 할 기능들을 미리 갖추어두어 그 기능들을 활용하여 웹페이지를 빠르게 만들 수 있고 또 직관적 template 기능과 app단위 별로 작업이 분리되어 있어 개발자의 관점에서 작업이 복잡해질 일이 없습니다.

11.웹소켓이란 무엇인지

  • 웹소켓은 서버와 클라이언트 간에 연결을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 만들어준다.
  • stateless한 http연결과 달리 stateful 프로토콜이기 때문에 서버와 클라이언트 간의 연결을 항상 유지해야 하며 이를 위한 자원이 들어간다.
  • 실시간 채팅이나 메시지처럼 realtime 서비스에 주로 사용된다.

12.어레이(배열)와 (링크드)리스트의 차이

  • 색인
    • 배열은 인덱스가 있다. 리스트는 인덱스가 없다
    • 따라서 배열의 조회속도는 빠르고 리스트는 최악의 경우 전부 순회해야 한다.
  • 메모리
    • 배열은 메모리의 크기가 할당되어 있다. 따라서 삽입, 삭제 시에 크기를 조정해야 할 수도 있어 삽입삭제가 느리다.
    • 반면에 리스트는 연결의 조정만 해주면 되기 때문에 삽입 삭제가 빠르다.

13.TCP와 UDP의 차이

  • 안정성
    • TCP 연결은 연결과 해체를 위한 프로토콜이 따로 존재한다.( 3way-handshake, 4way-handshake) 따라서 안정성이 높다.
    • UDP 연결은 연결을 설정하고 해제하는 과정이 없기 때문에 안정성이 떨어진다.
  • 속도
    • TCP는 연결과 해제에 따로 시간을 들이는 만큼 속도는 떨어진다.
    • UDP는 확인 절차보다는 데이터를 연속적으로 보내주는 만큼 속도는 더 빠르다.
  • 활용
    • TCP는 웹페이지 데이터 송수신 등에 쓰인다.
    • UDP는 DNS, streaming 서비스에 쓰인다.

14.TDD란

테스트가 중심이된 개발을 말한다. 테스트를 먼저 작성하고 그 테스트를 통과할 최소한의 코드를 작성하는 과정을 반복하여 개발하는 것을 말하는데 이를 통해 얻는 이점으로는 발생할 수 있는 에러들을 미연에 방지할 수 있고 또한 앞으로 코드를 바꿔서 생길 문제들을 테스트코드들을 통해 미리 확인하고 안정성을 확보할 수 있다.

15.CI/CD란

  • CI
    • CI는 지속적인 통합이라고 불리며 버그 수정이나 코드의 변경사항을 테스트 빌드 과정을 거쳐 주기적으로 빈번하게 통합되는 것을 의미하는데
    • 요즘은 빌드, 테스트의 과정을 자동화하여 형상관리 툴에 병합하면 테스트를 거쳐 통과한 후 빌드를 알아서 해주는 기술로 굳혀지고 있다.
    • circle ci, github actions 등을 활용한다.
  • CD
    • CD는 지속적인 배포라고 불리며 CI를 거쳐 검증을 마친 코드를 바로 자동 배포하는 것을 말한다.

이 두가지 방법론을 통해서 개발자는 개발에만 더 집중할 수 있게 도움을 제공한다.

16.Eager-loading과 Lazy-loading 의 차이

  • ORM은 실제로 데이터를 사용해야 할 때 query를 보내는 lazy loading 방식을 사용한다. 이 방법이 실제로 웹서버의 동작을 유연하게 만들어주기는 하나 N + 1문제가 발생한다.
  • 쿼리셋은 실제로 데이터를 가져오지 않으면 캐싱해두지 않는다. 그렇기 때문에 lazy-loading을 통해 데이터를 가져올 때 마다 N번 더 쿼리를 보낸다는 치명적인 문제가 발생한다.
  • 이를 극복하기 위해 eager-loading을 사용한다. 가져올 데이터들을 미리 불러오는 방법이다. 이를 통해 데이터를 캐싱하여 나중에 그 데이터들을 조회할 때 쿼리를 다시 날리지 않도록 도와준다.

17.서비스 레이어를 분리하는 이유

  • 같은 로직을 각자 다른 요청에서 사용해야 하는 경우가 있다. 이럴 경우 개발자는 로직을 중복해서 개발할 수밖에 없게 되는데 서비스 레이어를 분리하면 중복코드를 제거할 수 있다.
  • 로직이 따로 분리되어 있으면 유지보수가 편리하다.
  • 모든 기능들을 세분화해서 service에 작성하게 되면 나중에는 서비스의 기능들을 조합해서 새로운 기능을 만들 수도 있다.
  • 확장성과 재사용성 그리고 중복 코드의 제거등의 이점을 얻을 수 있기 때문에 서비스 레이어를 분리한다.
  1. 무중단배포
  • 어플리케이션의 중단없이 배포하는 것을 말함
  • 업데이트나 모종의 이유로 서버가 다운 될 때 서버의 상태를 유지시키는 방법
  • restart always 태그를 통해서 서버 다운에 대처할 수 있음
    업데이트 시에 사용하는 로드밸런서를 활용한 블루 그린 배포, 점진적으로 전환시키는 롤링
  • 소수 유저에게만 적용시키면서 확인 후 전체를 배포하는 카나리 등이 있다.
  1. 도커가 제공해주는 역할 or 이점?
  • 도커를 사용하는 사용자의 os 혹은 내부에 다운로드 받은 프로그램의 버전과는 상관없이 사용자가 지정한 환경의 독립적인 가상 컨테이너를 얻을 수 있다.
  • 이를 통해 얻을 수 있는 이점은 여러대의 서버컴퓨터를 사용할 때 서버 컴퓨터의 환경을 동시에 동일하게 유지할 수 있다는 장점이 있고 개발환경에서는 환경문제로 인한 호환성 문제를 줄일 수 있다.
  1. TCP 3 way handshake & 4 way handshake

서로간의 패킷을 주고 받아 연결이 가능한지 데이터의 송수신이 완료되었는지 확인하는 방법.

  • 3way-handshake
    • 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정 (지정된 포트가 listen 상태인지 등을 확인함)
    • 양쪽 모두 데이터를 전송할 준비가 되어있다는 것을 보장하고 실제로 데이터 전달이 시작되기 전에 서로가 준비가 되었다는 것을 알 수 있도록 한다.
  • 4way-handshake
    • 데이터의 송수신이 완료되었는지 확인하는 절차
  1. 객체지향에 대해 설명하세요
  • 개발은 현실세계의 문제를 개발자가 기술을 통해서 해결하는 것이라고 생각한다. 그런 관점에서 객체지향 방법론은 현실세계에 존재하는 개념을 object로 옮겨 개발하기 용이하게 만든다.
  • 예를들어 캡슐화, 상속, 다형성 이 세가지 특성은 각각 현실세계에 있는 개념의 특성을 공유한다고 생각한다.
  • 캡슐화 - 자동차와 사람이 있다고 한다면 자동차의 개념이 변한다고 해서 사람의 개념이 변하지 않고
  • 상속 - 자동차라는 개념 아래에 상속받은 다양한 기아, 현대, 페라리 등은 자신들만의 독특한 기능과 개념을 가지긴 하지만 자동차라는 범주에서 벗어나지 않는다.
  • 다형성 - 마지막으로 그렇게 상속받은 특성과 기능들은 각자의 특성에 맞게 변형될 수 있다.

22.파이썬이 느린 이유

  • 파이썬은 인터프리터 언어로 코드의 한줄마다 실행이 이루어져 컴파일 언어에 비해 느리다.
  • 또한 최근에 주목받고 있는 멀티 스레드를 활용하는 Go나 Nodejs에 비해 GIL이라는 글로벌 인터프리터 락 때문에 멀티스레딩에서 오히려 속도 저하를 보이고 있다.
  • GIL은 GC 나 reference cnt 때문에 어쩔 수 없이 사용될 수 밖에 없지만 최근에는 이 GIL에 다양한 변화를 가져오려는 움직임이 있다고 알고 있습니다.

23.Nginx에 대한 간단한 설명

  • 웹서버의 구축을 도와주는 소프트웨어(정적 페이지 요청을 처리하고 동적페이지인 경우 서버를 호출한다.)
  • 비동기 이벤트를 기반으로 하는 처리방식으로 응답이 빠르고 트래픽 처리에 유리하다.
  • nginx를 프록시 서버로 사용할 수 있다 클라이언트의 요청을 서버에 분산하기 위한 로드 밸런싱 기능, DDos 공격 완화, 웹서버의 ssl인증도 적용 가능하다.

24.컴파일러 언어와 인터프리터 언어 차이점

  • 컴파일러 언어는 java, c, c++ 등이 있고 인터프리터언어는 javascript, python, ruby등이 대표적이다.
  • 실행
    • 컴파일러 언어는 소스 코드 전체를 한꺼번에 기계어로 변환하여 실행한다.
    • 인터프리터 언어는 줄 단위로 번역과 실행을 하기 때문에 실행이 느리다.
  • 디버깅
    • 컴파일러 언어는 한꺼번에 컴파일을 하기 때문에 컴파일 도중에 에러가 난다.
    • 인터프리터 언어는 분석도중에 어느 행에서 오류가 발생했는지 알 수 있다.

25.DB-트랜잭션

  • 트랜잭션이란 논리적 기능을 수행하기 위한 작업의 단위를 말한다.
  • db-트랜잭션이란 여러가지 논리적인 작업을 처리하는 경우 작업이 모두 완벽하게 처리가 되지 않을 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않도록 막아주는 기능이다.
  • 일반적으로 모든 논리적인 작업이 완료되었을 때 commit하여 반영하는 방식과 비정상적으로 종료되었을 때 Rollback을 통하여 undo하는 방식을 통해 트랜잭션을 구현한다.

26.http와 https의 차이

  • http는 html을 주고 받기 위한 프로토콜로 개발되었다.
  • http는 암호화 되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고받는 메시지를 감청 및 탈취하는 것이 매우 쉽다. 따라서 정보를 탈취하고 공격을 감행하는 해커들이 많아졌고 이로 인해 정보의 중간 탈취를 막을 방법이 필요해졌다.
  • 이를 보안한 것이 https다. ssl인증서를 가진 웹사이트와 클라이언트는 공개키 - 개인키 쌍을 통해 접속하려는 웹사이트와 클라이언트가 일치하는지 확인작업을 거친 후 데이터의 송수신이 이루어진다.

27.MSA란 마이크로 서비스 아키텍쳐

  • 작은 단위의 서비스로 분리하여 설계하는 패턴을 말한다.

  • 예를들어 포트폴리오에 나와있는 몽글을 모놀리틱으로 구현하여 서버를 띄웠을 때 ec2.micro가 과부하가 걸려 메모리 아웃이 된 적이 있었습니다.

  • 그러나 이 메모리 아웃의 원인이 딥러닝 서버에 있다는 사실을 깨닫고 딥러닝 서비스를 다른 서버로 분리하여 처리하였고 이를 통해 메인 서버의 원활함과 경제적인 비용의 이점까지 얻을 수 있었습니다.

  • 이런 부분이 마이크로 서비스의 장점이 될 수 있겠구나라고 느낄 수 있었으나 확실히 모놀리틱에 비해 제어하기가 불편하고 응답속도면에서도 조금은 느리게 처리된다는 단점 또한 있다고 느꼈습니다.

28.클린코드란?

  • 협업을 할 때 불편함이 없는 코드
  • 정해진 컨벤션을 따라 약속된 대로 작성된 코드가 클린코드라고 생각한다.

29.SSR이란?(서버 사이드 렌더링)

  • SSR은 서버에서 사용자에게 보여줄 페이지를 모두 구성하여 사용자에게 페이지를 보여주는 방식이다.
  • 서버에서 받아온 html에 내용이 다 담겨져 있기 때문에 html을 통해 검색할 수 있도록 돕는 SEO의 성능이 CSR에 비해 좋다.
  • 그러나 리로딩 시에 블링킹 이슈, 서버에 과부하가 걸릴 수 있다는 단점이 있다.
  • 사용자가 페이지를 볼 수 있는 시간과 상호작용할 수 있는 시간의 공백이 꽤 긴 편이다.

30.쿠키와 세션

  • 쿠키
    • 쿠키는 사용자의 컴퓨터에 저장되는 작은 정보 기록 파일입니다.
    • 사용예시 → 이 창을 다시 보지 않기 기능 등
    • 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 쿠키가 유지된다는 특징이 있습니다.
    • 사용자의 컴퓨터에 저장되기 때문에 다른 사람이 접근하기 쉽다. 그래서 민감한 정보를 담아두기에는 적합하지 않다.
  • 세션
    • 세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리합니다.
    • 사용예시 → 로그인 유지
    • 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 됩니다.
    • 기간을 설정할 수는 있으나 브라우저가 종료되면 사라진다.

31.CSRF 와 XSS 공격에 대해

  • CSRF
    • cross site request forgery
    • 사용자가 의도치 않은 행위를 하도록 만드는 일종의 사이트 혹은 사용자에 대한 공격
    • 사용자의 계정을 통해 광고를 게제하는 공격 등이 있다.
  • XSS
    • cross-site scripting
    • 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법
    • 삽입된 코드를 실행하게 만들어 쿠키나 세션 토큰등의 민감한 정보를 탈취한다.

32.정적 컨텐츠와 동적컨텐츠의 차이

nginx를 예로들어 생각해보면 nginx는 static한 컨텐츠에 대한 요청을 클라이언트에 보내주고 dynamic한 컨텐츠에 대한요청은 연결된 서버로 연결해준다.

  • 동적컨텐츠
    • 누가/언제 서버에 요청하느냐에 따라 각각 다른 내용이 보여지는 컨텐츠
    • 대체로 로그인한 유저에 따라 다른 정보를 제공해주는 컨텐츠이다.
  • 정적컨텐츠
    • 누가/언제 서버에 요청하더라도 동일하게 내용을 보여주는 것.
    • html, css javascript로 만들어진 이미 만들어진 결과물을 사용자에게 보여주는 컨텐츠

33.사용한 기술을 중심으로 본인의 프로젝트를 설명해주세요.

몽글이라는 프로젝트는 익명의 작성자가 고민을 올리면 기명의 사용자가 편지를 써주는 웹사이트입니다.

Django 와 DRF를 활용하여 REST API 서버를 만들고 Docker를 활용하여 ci-cd로 배포의 자동화를 구현하였고 추가적으로 페이지 속도향상을 위해 자주 사용되는 메인페이지의 쿼리를 redis서버에 캐싱하여 속도를 높였고 단순히 쌓이기만 하는 게시판 글을 검색할 수 있도록 elastic search를 활용하여 추천 검색 기능 또한 사용할 수 있도록 개선하였습니다.

34.인증과 인가의 차이

  • 인증이란?
    • 유저가 제공한 유저 정보와 데이터베이스에 저장된 데이터가 일치하는지 여부를 판단해 본인인지 확인하는 것을 인증이라고 한다.
  • 인가란?
    • 유저의 권한을 확인하여 허가를 해주는 것.

http는 기본적으로 stateless 즉, 상태를 저장하지 않는다. ux적 관점에서 활동할 때 마다 로그인을 해야하는 불편함이 있기 때문에 계속 로그인을 한 상태로 유지시켜주는 방법이 인증과 인가에서 중요한 화두라고 생각한다.

35.CORS에 대해 설명해주세요

  • 도메인이 다르면 요청을 주고받을 수 없게 하는 것이 원래 웹브라우저의 기본 정책!
  • 그러나 시간이 갈수록 웹브라우저로 할 수 있는 일들에 대한 요구가 높아졌다. 예를들면 날씨API를 가져와 유저에게 날씨를 보여줘야 한다거나 서비스를 잘게 나누는 일들이다.
  • 클라이언트에서는 request header에 허락 요청을 서버에서는 허락한다는 내용을 담아주면 된다.
  • cors의 과정은 클라이언트에서 option 메소드를 보내 확인을 하고 서버에서 허락한다는 답변이 오면 지정된 메소드로 리퀘스트를 보내고 최종적으로 리스폰스를 받는다

36.프레임워크와 라이브러리의 차이

  • 의미
    • 프레임워크란 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다.
    • 라이브러리는 특정 기능을 모아둔 코드, 함수들의 집합이라고 생각하면 된다.
  • 제어
    • 라이브러리를 사용할 때 개발자는 어플리케이션 코드의 흐름을 직접 제어해야한다.
    • 반면에 프레임워크는 제어의 흐름을 프레임워크가 가지고 있고 개발자가 필요한 코드를 작성한다.

37.동기 vs 비동기 차이

  • 함수의 실행
    • 동기- 요청한 코드에서 결과가 주어져야 한다.
    • 비동기 - 요청한 코드에서 결과가 바로 주어지지 않는다.
  • 설계
    • 동기 - 설계가 매우 간단하고 직관적이다.
    • 비동기 - 동기에 비해 설계하기가 어렵다.
  • 효율성
    • 동기 - 결과가 주어질 때까지 아무것도 못하고 대기하기 때문에 효율성이 떨어짐
    • 비동기 - 결과를 기다리지 않고 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다.

38.DNS가 무엇인지?

  • 국제적인 단위로 웹사이트의 IP주소와 도메인 주소(이름)를 이어주는 환경/시스템이다.
  • DNS서버는 웹사이트의 ip주소를 특정 도메인주소와 같다는 기록을 저장해두고 사용자들이 도메인주소로 접속했을 때 ip주소로 연결될 수 있도록 한다.

39.로드 밸런싱이 무엇인가

  • 서버에 가해지는 부하를 분산해주는 기술을 말한다.
  • 주로 한대의 서버에 부하가 집중되지 않도록 트래픽을 관리한다. → 서버가 다운되는 상황이나 느려지는 상황에 유연하게 대처가 가능하다.
  • 라운드로빈 방식, ip 해시방식 등 다양한 알고리즘을 통해 로드밸런싱을 구현할 수 있다.

40.HTTP Status Code 2번대 4개 4번대 5개 5번대 4개

  • 2XX
    • 200 성공
    • 201 created
    • 202 accepted
    • 204 no content
  • 4XX
    • 401 unauthorized
    • 404 not found
    • 400 bad request
    • 403 forbidden
    • 405 method not allowed
  • 5XX
    • 500 internal server error
    • 502 bad gateway
    • 503 service unavailable
    • 504 gateway timeout
profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글