본문 바로가기

전체 글

(40)
[Laravel]CQRS 적용, Elasticsearch (1) 개요 개발 규모가 커짐에 따라 나타나는 문제의 하나로, 레코드 수 증가나 데이터베이스 쿼리 복잡화로 인한 응답 속도 지연이 있습니다. 웹 서비스의 규모 확대에 따라 검색이 복잡해지고, 출시 시에는 문제가 되지 않았던 대규모 데이터 검색이나 문장 검색 시에 일반적으로 사용하는 Like 검색, 구현 코드의 복잡성 증가 등에 의한 성능 저하가 해당 됩니다. CQRS(커맨드 쿼리 책임 분리) Command(쓰기): 데이터베이스 입력 Query(읽기): 데이터베이스 검색 애플리케이션 규모에 관계없이 데이터 입출력은 변하지 않으며, 보통 RDBMS를 사용해 쓰기 읽기가 함께 사용됩니다. Command 할땐 정확하지 않는 데이터가 발생하지 않도록 제약이나 정규화를 하면서 테이블 설계를 수행합니다. 하지만, 실무에선 ..
[Laravel]queue를 이용한 비동기 분산 처리 개요 실제 어플리케이션에서 이벤트를 도입하려면 프레임워크에서 제공하는 무언가의 처리를 트리거로 만들어 특정한 처리를 실행하고 싶을때 이용하는 것이 좋습니다. 대규모 애플리케이션에서 복잡해지기 쉬운 비즈니스 로직의 처리를 분산하기 위해서는 애플리케이션에서 제공하는 기능을 세세하게 분할하고, 처리 로직에 발생하는 사용자의 해동을 분석해 이를 트리거로 정의하는 것도 가능합니다. Queue 메일 송신, 엑셀이나 PDF를 보고서 출력 등 큰 데이터를 다루는 처리 로직이 있을 때, 사용자의 요청을 받아 처리 완료 시점까지 사용자를 기다리게 하는 것은 사용자의 이탈에 직접적인 영항를 주므로 웹 애플리케이션 개발에서는 금기 사항입니다. 시간이 걸리거나 부하가 높은 처리를 해결 하기 위해서는 라라벨에서 제공하는 큐Que..
[laravel]리포지토리 패턴 도입하기, 인터페이스 의존성 주입(DI) 1. 개요 애플리케이션 개발시 데이터는 다양한 위치에 저장합니다. RDB나 NoSQL 또는 캐시,파일 를 이용 하기도 합니다. 규모가 작거나 크지 않는 요구사항에는 필요없지만, 점차 요구사항이 많아지고 규모가 커지게 되면 확장성을 고려한 개발을 해야합니다. 데이터 저장 위치가 바뀌더라도 프로그램은 가능한 변경되지 않도록 하는 것이 좋습니다. 이런 문제에대응한 방법의 하나로 리포지터리 패턴을 이용 할 수 있습니다. 이전에 작성한 SOLID 중 OCP원칙을 지킬수 있습니다. [JAVA] - [SPRING] 좋은 객체지향 설계의 5가지 원칙(SOLID) [SPRING] 좋은 객체지향 설계의 5가지 원칙(SOLID) 클린코드로 유명한 로버트 마틴이 좋은 객체지향 설계의 5가지 원칙을 정리하였습니다. SOLID ..
모던 PHP, PSR, clean code 모던 PHP 오래전에 쓰여진 코드들은 정상 동작하지 않거나, 보안취약점이 있거나, 잘못된 방식으로 작성하는 경우가 있습니다. 모던 php는 이런 관습적인 코드를 타파하고 php를 개발하는 모든 개발자들 공통적인 코드로 개발하며 현대적인 방식으로 php를 개발 하기 위한 것입니다. 모던 PHP 조건 - 최신버전의 PHP - PSR(표준권고) 준수 - 패키지 매니저 https://www.php-fig.org/psr/psr-1/ PSR-1: Basic Coding Standard - PHP-FIG PSR-1: Basic Coding Standard www.php-fig.org https://github.com/yujineeee/clean-code-php GitHub - yujineeee/clean-code-p..
laraval sail을 이용한 환경 구축 개요 도커는 컨테이너라 불리는 가상 환경을 만들고 실행할 수 있는 소프트웨어입니다. VirualBox에 비해 가볍고 빠르게 동작합니다. 또한, 서버와 같은 인프라 리소스나 미들웨어, 각종 환경 설정 내용도 코드로 관리할 수 있고, 이를 이용해 같은 환경을 간단하게 재현할 수도 있습니다. 라라벨 세일은 도커의 컨테이너 가상 환경에서 라라벨 애플리케이션을 실행합니다. 먼저, 라라벨 세일의 동작에 필요한 도커를 설정합니다. 1. 도커 설치 도커 공식 다운로드 페이지에 접속해, 다운로드 및 설치를 해줍니다. https://www.docker.com/ Docker: Accelerated Container Application Development Docker is a platform designed to help..
[SPRING] 쓰레드 풀 적정 숫자 애플리케이션 로직의 복잡도, CPU, 메모리, IO 리소스 상황에 따라 모두 다름 성능 테스트 최대한 실제 서비스와 유사하게 성능 테스트 시도 툴: 아파치 ab, 제이미터, nGrinder
확실한 캐시 무효화 하기 확실한 캐시 무효화 하기 Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache HTTP 1.0 하위 호환 설명 Cache-Control: no-cache 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용(이름에 주의!) Cache-Control: no-store: 데이터에 민감한 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제) Cache-Control: must-revalidate 캐시 만료후 최초 조회시 원 서버에 검증해야함 원 서버 접근 실패시 반드시 오류가 발생해야함 - 504(Gateway Timeout) must-revalidate는 캐시 유효 시간이라면 캐시를 사용함 Pragma: no-cache..
2023년 3회 정보처리기사 필기 합격 & 공부 내용 1 과목 소프트웨어 설계 1. UML 다이어그램의 종류 및 특징 https://seulhee030.tistory.com/56 UML 다이어그램의 분류 정적구조: [ 클래스, 객체, 패키지, 컴포넌트, 복합구조, 배치] 동적구조: [ 유스케이스, 상태, 활동, 시퀀스, 통신, 상호작용, 타이밍] 1) 클래스 다이어그램: 객체를 생성하기 위한 도구 2) 객체 다이어그램: 객체 간의 연결관계를 표현 3) 패키지 다이어그램: 객체들의 그룹화된 표현 4) 컴포넌트 다이어그램: 시스템을 구성하는 컴포넌트 사이에 의존관계를 표현 * 컴포넌트는 1개이상의 클래스로 구현됨. 5) 복합구조 다이어그램: 컴포넌트나 클래스의 내부 구조를 보여주기 위해 사용à내부 연결 형태를 표현 [UML]UML다이어그램 종류 및 특징(구조..