자바/스프링 개발자를 위한 실용주의 프로그래밍 : 네이버 도서네이버 도서 상세정보를 제공합니다.search.shopping.naver.com 해당 포스팅은 '자바/스프링 개발자를 위한 실용주의 프로그래밍' 책의 CH.03 행동 파트에 대해 학습하고 정리한 내용입니다. 객체지향 프로그래밍에서는 ‘역할’, ‘책임’, ‘협력’이 이루어져야 하고, 이는 인터페이스를 기반으로 구성할 수 있다. 인터페이스에 역할을 부여하여 책임을 갖게 하고, 여러 역할들이 협력하여 프로그래밍을 하는 것이다. 이번 포스팅에서는 객체지향적인 클래스를 설계하는 방식에 대해서 이야기해보고자 한다. 📌 Car 클래스 설계하기 Car라는 클래스를 설계해야 된다면 어떻게 설계할까? 설계를 2가지 방식으로 한다고 가정해 보자. 우선 첫 번..
자바/스프링 개발자를 위한 실용주의 프로그래밍 : 네이버 도서네이버 도서 상세정보를 제공합니다.search.shopping.naver.com 해당 포스팅은 '자바/스프링 개발자를 위한 실용주의 프로그래밍' 책의 CH.01 절차지향과 비교하기 파트에 대해 학습하고 정리한 내용입니다. 이번 포스팅에서는 객체 지향 프로그래밍이 무엇인가에 대한 이야기를 해보고자 한다. 이에 앞서 절차 지향 프로그래밍을 간단히 알아보고 이를 비교하여 객체 지향 프로그래밍이 무엇인지 이야기해 보겠다. 📌 절차 지향 프로그래밍 절차 지향 프로그래밍은 순차적으로 코드를 실행하며 프로그래밍을 하는 것인데, 여기에서 절차는 함수를 말한다. 즉, 함수를 설계하여 프로그래밍을 해나가는 것을 말한다고 이야기할 수 있다. // 절차 지..
이번 포스팅에서는 멀티 프로젝트에 대해서 이야기해보고자 한다. 그전에, 멀티 프로젝트에 반대되는 것인 단일 프로젝트에 대해 먼저 이해하면 좋을 것 같다. 📌 단일 프로젝트 단일 프로젝트는 프로젝트를 하나로 구성한다는 의미를 가지는데, 모든 기능들이 한 패키지 아래에 존재하는 형태를 말한다. spring boot 프로젝트를 기본적인 설정을 하고 생성하면 보이는 형태가 단일 프로젝트와 같다. 즉, 하나의 프로젝트 안에 모든 도메인과 기능이 포함된 것을 말한다. 📌 멀티 프로젝트 멀티 프로젝트는 단일 프로젝트와 달리 여러 개의 서브 프로젝트(혹은 모듈)로 분리된 형태를 말한다. 그렇다면, 멀티 프로젝트를 언제 왜 사용해야 할까? 💡 When?프로젝트의 규모가 커 유지보수와 확장이 필요할 때.여러 팀이..

offset 기반 페이징 방식의 단점서버 진화 ~~~ (서버 스케일업)[hikaricp connection is not available] - 테이블은 많지만 회전율은 낮은..6명이 동시에 요청하면 OOM 발생하는 서비스영어회화 스터디 서비스를 개발하면서 부하 테스트를 위happygimy97.tistory.com 지난 포스팅에서는 offset 방식의 단점에 대해 알아본 후, more 방식으로 업데이트했을 때의 성능 개선이 얼마큼 일어나는지를 확인해 보았다. 이번 포스팅에서는 인덱스를 설정으로 성능 개선을 한 과정에 대해 이야기를 해보고자 한다. 📌 인덱스 설정 부하 테스트를 진행 중인 API는 검색 API였고, ORDER BY 절이나 where 절에 쓰이는 조건은 몇 가지 중에서 랜덤하게 설정되도록..
이번 포스팅에서는 인덱스에 대해서 이야기해보고자 한다. 인덱스는 개발하면서 여기저기에 자주 나오는 용어이지만, 막상 인덱스가 뭐예요?라는 질문을 받으면 수박 겉핥기식의 답변만 내놓았었다. 때문에 이번 기회에 인덱스를 제대로 학습하고 정리해보려 한다. 📌 인덱스 인덱스는 데이터를 빠르게 검색하도록 도와주는 도구인데, 데이터의 위치를 참조하거나 정렬된 구조를 가진다. 인덱스는 마치 도서관의 책을 찾는데, 위치를 모르고 찾는 것과 위치를 알고 찾는 것의 차이라고 볼 수 있다. 도서관이 데이터베이스이고, 책이 테이블의 데이터, 책의 위치가 인덱스인 것과 같다. 때문에, 인덱스로 인해 데이터베이스의 테이블 내 데이터를 효율적이고 빠르게 찾을 수 있게 된다. 인덱스가 데이터를 빠르게 찾도록 도와주는 도구라면, ..

서버 진화 ~~~ (서버 스케일업)[hikaricp connection is not available] - 테이블은 많지만 회전율은 낮은..6명이 동시에 요청하면 OOM 발생하는 서비스영어회화 스터디 서비스를 개발하면서 부하 테스트를 위해 클라우드 환경에 필요한happygimy97.tistory.com 지난 포스팅에서 MySQL 서버 스케일업을 하기 전과 후의 평균 응답 속도 차이를 살펴보았다. 이번 포스팅에서는 offset 기반 페이징 기법을 cursor 기반 페이징 기법(more 방식이라고 함)으로 변경한 이유와 그 결과에 대해 이야기해 보고자 한다. 📌 offset 기반 페이징 방식offset 기반으로 페이징을 처리할 때, offset과 pageSize가 필요한데, 아래와 같은 쿼리가 있다고 ..