📘 message 큐,nosql,rdbms,django,flask,sprinsg,springboot

massage 큐에 대해 설명

서비스들 간에 데이터를 주고 받는 방법중에 하나 장점 (Decoupling) service a가 service b,c,d모두에 dependency가 생김 만약 챗서버라 하면 어떤 유저가 메시지를 보냈어 그럼 새로운 메시지가 왔을때 이걸 데이터베이스에 저장도 해야되고 메시지를 받는 유저한테 메시지를 포워드해줘야되고 이메일을 보내줘야될때도 있고 여러가지 디펜던시가 생길수 있다. 그러다 보면 이거의 모든 코드를 한 serviceA에 넣어줘야된다 그럼 점점 복잡해지고 테스트하기어려워지니까 이런 상황에서 메시지 큐를 넣으면 디펜던시가 훨씬 적어진다.

레빗엠큐와 카프카 차이점

카프카는 이벤트 브로커이고(업무시간동안 필요한 시간동안 보관가능 데이터 처리후 삭제 하지 않음 (에러해결)) 레빗엠큐는 메시지 브로커이다(메시지를 받고 처리하는 브로커 끝나면 삭제) 메시지 브로커는 이벤트 브로커로 역할을 할수 없지만 이벤트 브로커는 메시지 브로커 역할을 할수 있다.

flask와 django의 차이점

프로젝트 레이아웃이 다릅니다. Flask는 프로젝트마다 1개의 어플리케이션을 개발하도록 되어 있지만, Django는 한 프로젝트 내에 다양한 어플리케이션이 존재 할 수 있습니다. 같은 프로젝트 안에서 여러 어플리케이션이 동시에 사용하는 재사용 가능한 코드를 작성하기도 쉽고, 개별 프로젝트 관리도 편하게 됩니다. 유지보수의 기본은 분할 정복입니다.

언제 Django를 쓸까?

웹앱이나, API 백엔드를 만들고 싶다! 빠른 개발, 빠른 배포, 빠른 업데이트! CSRF, XSS, SQL 인젝션, 클릭재킹등 기본적 보안 완비! 스케일링 업, 스케일링 다운을 자유자재로 하고 싶다면!

언제 Flask를 쓸까?

도저히 1개의 코드베이스에 담을 수 없을만큼 앱이 크거나, 아니면 너무 앱이 작다면!

nosql과 rdbms의 차이

장점 RDBMS는 위에서 설명을 하였듯이 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장하고 있습니다. 또한 관계는 각 데이터를 중복없이 한 번만 저장할 수 있습니다. 단점 테이블간테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있습니다. 성능 향상을 위해서는 서버의 성능을 향상 시켜야하는 Scale-up만을 지원합니다. 이로 인해 비용이 기하급수적으로 늘어날 수 있습니다. 스키마로 인해 데이터가 유연하지 못합니다. 나중에 스키마가 변경 될 경우 번거롭고 어렵습니다.

NoSQL 장점 NoSQL에서는 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있습니다. 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있습니다. 데이터 분산이 용이하며 성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능합니다. 단점 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행을 해야 합니다. 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정가 어려울 수 있습니다.

nosql의 종류

  1. key-value
    • 키와 값으로 이루어진, 저장과 조회라는 가장 간단한 원칙에 충실한 데이터베이스.
    • 기본적인 패턴으로 Key,value가 하나의 묶음으로 저장되는 구조로 단순한 구조이기에 속도가 빠르며 분산 저장 시 용이
    • Redis
  2. Document
    • XML, JSON, BSON - 계층적 트리 데이터 방식으로 저장
    • key-value Type과의 차이는 Database에 값을 문서로 저장한다는 점
    • MongoDB

spring과 spring boot의 차이점

프링(Spring)은 프레임워크이며, 스프링 부트(Spring Boot)는 스프링 프레임워크를 기반으로 한 도구입니다. 스프링은 설정 파일을 작성해야 하지만, 스프링 부트는 자동 설정을 제공하여 간편하게 개발할 수 있습니다. 또한, 스프링 부트는 내장 서버를 제공하여 쉽게 웹 애플리케이션을 실행할 수 있습니다. Spring은 스프링 프레임워크를 보다 세밀하게 제어하고자 하는 경우에, Spring Boot는 빠르고 간단하게 스프링 애플리케이션을 개발하고자 하는 경우에 사용됩니다.