본문 바로가기
반응형

IT Computer73

MySQL InnoDB의 특징(1) MySQL의 대표적인 DB는 InnoDB와 MyISAM이 있습니다. MySQL 5.5 이후 등장하였으며 스토리지 엔진입니다. 전형적인 메모리 기반의 엔진 MyISAM과 HDD를 기반으로 했지만 현재는 거의 메모리 기능에서 MyISAM을 능가하는 InnoDB가 있습니다. 현재는 InnoDB가 주류로 쓰인다.InnoDB의 전체적인 구조는 위와 같습니다.대표적인 InnoDB 특징을 알아보고자 합니다InnoDB의 특징PK에 의한 클러스터링오라클 DB와 유사하게 pk의 순서대로 저장됩니다. 다른 칼럼의 경우 레코드의 주소가 아닌 Primary Key의 값을 주소로 사용합니다. 이 때문에 Range스캔은 빨리 처리됩니다.외래키 지원외래키가 지정된 키의 경우 부모 테이블, 자식 테이블에 데이터가 있는지 확인을 하고 .. 2024. 8. 26.
Spring Boot Fluentd AWS S3 연동 Spring Boot Fluentd 연동흔히 모니터링으로 Spring actuator+Prometheus+Grafana나 ELK가 있습니다. 이외 다양한 오픈소스들이 있습니다. fluentd는 logstash를 대체하여 EFK로도 활용됩니다. fluentd의 장점으로는 매우 경량화되어 있으며 다른 시스템과 결합하여 통합적인 로그 모니터링(DB 등)과 경량화된 프로그램으로 매우 저렴한 비용에 로그를 수집할 수 있습니다.여기에서는 spring boot와 fluent를 연동한뒤 AWS S3를 저장하는 예시를 작성하였습니다.Fluentd 설정Fluentd설치mac 기준으로 작성하였습니다. 직접 fluent 공식페이지에서 다운로드하여 사용할 수 있습니다. mac을 사용하여 mac homebrew를 이용하여 사용합.. 2024. 8. 20.
객체지향 설계 원칙 SOLID 원칙 SOLID 원칙객체지향의 5가지 핵심 설계 원칙이다. 이외에도 여러 가지 마이너 한 원칙들이 존재하지만 SOLID만 원칙을 준수해도 좋은 코드가 나온다.로버트 마틴이 정리한 좋은 객체지향 설계의 5가지 원칙이다.1. SRP (Single Responsibility Principal) 단일 책임 원칙하나의 책임을 가지는 클래스를 가져야 한다.하나의 책임을 가진다는 것은 클래스 내에서 해야 할 일이 많지 않고 명확하게 하나의 일을 수행해야 한다는 것이다. 중요한 핵심은 변경되는 어떤 경우라도 하나의 이유로만 변경이 되어야 한다는 것이다.너무 많은 것을 알고 여러 책임을 가지고 있다면 다양한 이유로 클래스 하나가 변경될 수 있다. 이러한 경우는 SRP 원칙이 지켜지지 않았다고 할 수 있다.다음과 같은 예시는 .. 2024. 8. 2.
Nginx LoadBalancing 2 Nginx StickySticky CookieNginx plus에서 제공하는 기술로 Nginx가 쿠키를 생성하고 추적한다. 특정 사용자의 요청을 항상 동일한 서버로만 보내게 하여 부하 분산에 효율을 높인다.클라우드환경의 경우는 해당 기능이 비효율적일 수 있다.Sticky cookie는 다음과 같이 사용할 수 있다.upstream backend{ server back1.example.com; server back2.example.com; sticky cookie (name) [expires=time [domain] [httponly] [secure] [path=path];}Sticky Learn부하 분산 중 세션 지속을 위한 기법이다. Nginx plus에서 제공하는 기술로 upstream.. 2024. 6. 20.
Nginx Load Balancing 기능 1 로드밸런싱의 기본적인 방식으로는 Scale UP과 Scale Out 방식이 있다. Scale Up 방식은 수직적 확장이며 한대의 리소스를 성능적으로 높이는 방법이다. Scale Out은 수평적 확장으로 여러대로 확장하는 방식이다. 소프트웨어 기반 인프라는 Scale Out에 유연한 특징을 가지고 있다.부하를 분산하여 고가용성(HA)을 보장하는 시스템을 부하분산 (load Balncing)이라 한다. Nginx에서는 TCP, UDP, HTTP에 대해 부하 분산 기능을 제공한다.상태가 있는 경우 Nginx는 쿠키나 라우팅을 추적해 부하분산을 처리하는 방법을 사용한다. 스티키 관련 기능을 제공한다. 세션 혹은 세션을 사용하지 않더라도 웹소켓등을 사용 중이라면 이를 고려하여 설계해야 한다. Nginx는 Stic.. 2024. 5. 15.
Nginx 기본 Nginx 고성능 웹서버로 나왔으며, 리버스 프록시, 이메일 관련 프록시 등을 수행하며 기존의 스레드 기반의 톰캣의 10K Connection문제등을 해결하기 위한 보조 웹 서버로 나왔습니다. Master - Worker Nginx는 Master - worker 프로세스로 나누어져 있고 worker 프로세스들을 관리합니다. Nginx 설정 파일에 따라 worker 프로세스를 관리하고 설정들을 읽습니다. 이로 인한 주요 장점으로는 worker 프로세스들로 여러 처리를 유연하게 하며 서비스를 중단 없이 nginx 설정을 바꿀 수 있습니다. 또한 하나의 worker 프로세서에 문제가 생겨도 다른 프로세서에는 문제가 발생하지 않습니다. 만약 설정이 바뀔 경우 처리 중이던 worker 프로세스는 그대로 두고 차례.. 2024. 3. 27.
반응형