개인공부

프론트엔드를 위한 백엔드, Backends For Frontends(BFF) 시간이 지나면서 서비스가 제공하는 프론트 엔드의 코드가 점점 더 복잡해지고 다양해지는 경우는 허다하다. 이에 따라 백엔드 또한 기능 제공을 위해 복잡해지게 된다. 따라서 다양한 프론트엔드 유형의 기능을 지원하는 백엔드 서비스가 필요성이 생겨나게되었고, 이를 위해 BFF 가 탄생하게 되었다. 웹 서비스만 제공하던 서비스에서 모바일 서비스를 제공해야하는 경우, 새로운 유형의 프론트엔드를 도입해야한다.(모바일기기의 성능과 데스크톱의 성능이 다르기 때문) 새로운 서비스(모바일)을 제공하기 위해서는 백엔드에서도 모바일에 특화된 코드와 기능을 추가해야한다. 모바일 기기는 화면 크기가 더 작으므로, 기존의 API가 아닌 새로운 API 를 통..
파이프-필터 아키텍처(Pipes and Filters Architecture) 파이프-필터 아키텍처는 일련의 파이프를 따라 흐르며 여러 단계의 필터를 통과해 원하는 환경에 도달하는 데이터로 묘사할 수 있다. 파이프 는 필터를 연결하며, 일반적으로 분산 대기열이나 메시지 브로커에 해당한다. 필터는 각 단계에서 데이터를 처리하는 고립된 소프트웨어 컴포넌트 에 해당하며, 수신 데이터에 대해 하나의 작업만을 수행하고, 나머지 파이프라인과 무관하게 동작한다. 데이터 소스: 데이터의 출처를 말한다. 사용자로부터 네트워크 요청을 수신하는 백엔드 서비스가 될 수도 있다. 센서 또는 종단 장치에서 데이터 샘플을 수신하는 서비스형 함수 요소 같은 경량 서비스가 될 수 있다. 데이터 싱크: 모든 처리 단계(필터)를 통과한 ..
·개인공부
데메테르의 법칙, LoD LoD 는 일반적인 설계원칙(SOLID, KISS, DRY) 만큼 잘 알려진 원칙은 아니지만, 이 원칙을 준수할 경우 코드에서 높은 응집도 와 낮은 겹합도 를 달성 해낼 수 있게 된다. 높은 응집도와 낮은 결합도 는 코드의 가독성과 유지 보수성을 효과적으로 향상시키고 기능 변경으로 인한 코드 변경 범위 를 줄일 수 있는 매우 중요한 설계 사상이다. 단일 책임 원칙, 구현이 아닌 인터페이스기반 개발 등 많은 설계 원칙 또한 높은 응집도와 낮은 결합도를 달성하는 것을 목표로 하고 있다. 시스템, 모듈, 클래스, 함수의 설계와 개발 뿐만 아니라 마이크로서비스, 프레임워크, 구성요소 클래스 라이브러리의 설계와 개발에도 적용될 수 있다. 높은 응집도 높은 응집도는 클래스 자체의 설계에 사..
·개인공부
가능한 단순하게 유지하라, Keep It Short and Simple(KISS) KISS 에 대해 알아보기 전에, 다음 질문에 스스로 답을 해보는 것이 좋다. KISS 원칙에서 단순한 이라는 단어가 가지는 의미는 무엇일까? 어떤 종류의 코드를 단순한 코드라고 할 수 있을까? 복잡한 코드는 어떤 코드인가? 간단한 코드를 작성하려면 어떻게 하면 좋을까? YAGNI 원칙은 KISS 원칙과 어떤 점이 다른가? KISS 원칙 정의와 해석 KISS 원칙은 가능한 단순하게 유지하라 는 원칙이며, 많은 상황에 적용될 수 있는 포괄적인 설계 원칙이다. Keep It Simple and Stupid, Keep It Short and Simple, Keep it Simple and Straight forward 등 다양하..
·개인공부
리팩터링, Refactoring 지속적인 리팩토링 은 코드 품질을 향상시키는 효과적인 수단이다. 하지만 리팩토링 을 하는 것은 단순히 문제를 해결하는 것보다 더 많은 능력이 요구된다. 코드를 리팩터링 할 때에는 코드의 나쁜냄새 와 설계결함 에 대한 통찰력을 기반으로 설계원칙, 디자인패턴, 코딩규칙 등을 합리적으로 능숙하게 사용해야한다. 효율적인 리팩터링 을 진행하기 위해서는 왜(Why, 목적) 리팩터링을 해야하는지, 무엇(What, 대상)을 리팩터링 해야하는지, 언제(When, 시기) 리팩터링을 해야하는지, 어떻게(How, 방법) 리팩터링을 해야하는지 을 알아야한다. 리팩터링의 목적 마틴 파울러가 정의한 리팩토링은 다음과 같다. 리팩터링은 코드에 대한 이해를 쉽게 하기 위해 소프트웨어의 내부 구조를 개선..
로드밸런싱, LoadBalancing 로드밸런싱이란, 전송자로부터 오는 각 요청을 시스템 내 한 워커에 디스패칭 하는 기능을 말한다. 이를 활용한다면, 사실상 무한대의 컴퓨터 자원을 활용할 수 있는 클라우드 환경에서 손쉽게 확장성을 가진 애플리케이션을 만들 수 있다. 로드밸런싱을 사용한다면 매일 수십억 개 이상의 요청을 처리할 수 있다. PB 규모의 데이터를 처리할 수 있다. 클라우드 환경에서 비용 효율적인 아키텍처를 구축할 수 있다. 로드밸런싱이 없을 경우 수만 명의 고객이 사용하는 애플리케이션을 단일 클라우드 서버 에서 배포하는 상황일 경우 다음과 같은 문제점이 발생할 수 있다. 수신 트래픽이 단일 서버의 CPU 메모리 혹은 네트워크 용량을 넘어설 경우 애플리케이션이 충돌하거나 성능이 저하될 수 있다..
KEEMSY
'개인공부' 카테고리의 글 목록 (5 Page)