진짜 개발자
본문 바로가기

전체 글 (총 571개)

Kafka - Kafka란? (Kafka의 구조와, 주요개념) Apache Kafka Apache Kafka의 각 구성요소와 구성요소들의 주요 개념을 알아보도록 하겠습니다. 어떤 기술의 특성을 이해하고, 구성요소를 이해하는것은, 해당 기술을 이용해 특정 기능을 구현할때 매우 중요한 요소입니다. 불필요한 처리를 줄일 수 있고, 꼭 필요한 처리를 할지를 판단할 수 있는 밑거름이 되기 때문입니다. https://kafka.apache.org/documentation이 글은 Kafka 공식 홈페이지의 문서를 보며 정리한 글입니다. 1. Kafka란?Kafka는 Pub-Sub 모델의 메시지 큐입니다. 분산환경에 특화되어있는 특징을 가지고 있습니다. 이 글의 3.Kafka의 주요개념 에서 Kafka의 개념들과 이들의 특징을 더 자세히 알아보도록 하겠습니다. 2. 구성요소2.1..
ApplicationKnowhow/Server - 게시판 조회수 기능 성능 최적화 이번 포스팅에서는, 일반적인 조회수 기능의 성능 향상을 고려해보는 시간을 갖도록 하겠습니다 이번 포스팅에서는, 일반적인 조회수 기능의 성능 향상을 고려해보는 시간을 갖도록 하겠습니다. 1. 조회수 기능 살펴보기조회수는 어떤 글을 몇명의 사용자가 보았는지를 알려주는 것입니다. 방문자 수 또한 크게 보면 조회수와 같습니다.언뜻보면, 조회수는 상당히 간단한 기능이기 때문에, 최적화가 필요할까? 성능향상이 필요할까? 싶기도합니다. 하지만 아주 작은 리소스를 소모하는 부분들일지라도, 잘못된 설계를 했고, 수많은 사용자들이 이용하다보면 매우 큰 문제로 이어지기도 합니다.또한, 이렇게 작은 부분부터 하나 둘씩 성능 고려를 해두면, 나중에 정말 비즈니스상 크리티컬한 성능 문제가 야기 되었을때, 많은 도움이 되지 않을까..
Spring MVC - Spring MVC 동기화와 JPA 잠금기법 Spring MVC 동시성 테스트 이번 포스팅에서는 동기화 관련 문제를 다루어 보도록 하겠습니다. 우선, 동기화에 대해 알아보고, Spring MVC를 이용시 발생할 수 있는 문제점을 보도록 하겠습니다. 마지막으로, 이를 해결하는 방법도 알아보도록 하겠습니다. 만약! 현재 Spring MVC 프로젝트를 진행중이지만, Thread를 별도로 생성해서 공유 자원에 접근하는 것이 아닌데 왜, 동기화 문제가 발생하는지를 궁금해하신다면, Servlet에 대해 다시 공부를 해보셔야 합니다. 1. 동기화여러 스레드간 공유되는 자원은 항상 동기화 관련 처리를 해주어야합니다. 자바에서는 객체의 멤버변수가 동기화 대상 데이터가 될 수 있습니다. JVM에서, 객체는 Heap 영역에 할당되고, 이 Heap 영역을 Thread들..
Spring JPA - JPA를 이용해 Commerce App 만들기 - 10 (상품 후기 기능 확장) 이번 시간에는, 상품후기 기능을 기존 시스템에 추가해보도록 하겠습니다 이번 시간에는, 상품후기 기능을 기존 시스템에 추가해보도록 하겠습니다. 1. 상품후기 설계1.1 요구사항후기에는 별점과 후기 내용이 포함된다.구매한 상품에 대해서만 후기가 작성이 가능하다.별점은 집계되어 카탈로그에서 상품과 함께 보여진다.내가 작성한 후기 목록을 볼 수 있다.상품이 별점을 각각 몇개를 받았는지를 볼 수 있다. 1.2 설계기능 추출하기요구사항을 통해서 별점 집계 기능이 필요한것을 알 수 있습니다. 하지만, Item의 별점을 집계 하기위해서는 전체 상품 후기를 보고 집계할 수 있어야합니다. 또한, 카탈로그에서 여러 상품들이 보여지게 되는데요, 이때마다 한 상품마다 모든 후기 목록을 통해서 별점을 집계하는 것 보다는, 상품의..
Spring JPA - JPA를 이용해 Commerce App 만들기 - 9.2 (카테고리 기능 기존 시스템과 결합) 이번에는, 지난 포스팅(httpsgalid1 이번에는, 지난 포스팅(https://galid1.tistory.com/774)에서 구현했던, 무한카테고리 기능을 기존 시스템과 결합하는 방법을 알아보도록 하겠습니다. 1. 기존 시스템과 카테고리 기능 결합사실 최초 설계시, 카테고리를 염두하고 설계를 했었는데요, 카테고리만을 제외하고 구현을 했었습니다. 나중에 카테고리 기능을 추가하면서, 불편한 점이 없는지를 확인해보고 싶었기 때문이기도 합니다. 기존 설계에 비해서 달라진 점은 빨간 사각형에 해당하는 필드가 추가 되었다는 것 입니다. 왜 인지는 이전 포스팅을 참고해주세요. 우선 이전 포스팅에서 무한 카테고리 형태로 카테고리 기능을 구현했습니다. 구현했던 카테고리 기능을 이제, 기존 시스템에 카테고리 기능을 결..
Spring JPA - JPA를 이용해 Commerce App 만들기 - 9.1 (무한카테고리 구현 및 Redis를 이용한 캐싱) 무한 Category 기능확장을 해보도록 하겠습니다. 이번 포스팅에서는 카테고리 기능을 별도로 구현하는 방법을 알아보고, 다음 포스팅에서 기존 시스템과 카테고리 기능을 결합해보도록 하겠습니다. 1. 과정 1.1 카테고리 기능을 별도로 설계 및 구현합니다. 1.2 카테고리 기능을 기존 시스템에 결합합니다. 2. 카테고리 기능 설계 및 구현 2.1 Table 설계 1. 요구 사항 item은 이름, 가격, 속한 카테고리를 가지고 있습니다. item은 하나의 카테고리에만 속합니다. categories는 이름, 상위 카테고리 id를 가지고 있습니다. categories는 여러 item을 가질 수 있습니다. 2. 설계 및 과정 level table 처음 생각한 방법은 level(depth) 별로 테이블을 만드는 것..
Mysql - Mysql 성능 최적화 - 1 (시스템 설정) MySQL의 시스템 설정 SQL의 실행 성능향상은 어플리케이션에서의 성능향상에 비해 보다 쉽게 수십배에서 수백배까지 가능합니다. 따라서 우리가 실행할 쿼리가 어떻게 동작하는지를 이해하는것이 정말 중요합니다. 이번 포스팅에서는, SQL 쿼리에 영향을 주는 MYSQL의 시스템설정들에 대해서 알아보도록 하겠습니다. ORACLE이나 여타 DB에서는 기본적으로 적용되는 설정들이 다르기 때문에, MYSQL에 대한 설정임을 주의해주세요. 1. SQL모드 설정STRICT_ALL_TABLES기본적으로 저장하려는 값의 길이가 컬럼에 지정된 길이보다 긴 경우, 기본적으로 에러가 발생하지 않고 가능한 길이만큼만 잘라서 저장이 되게 되어있습니다.이때, 만약 저장하려는 길이보다 긴 경우, 에러를 발생시켜 값이 저장되지 않기를 원..