이번 글에선, 백엔드 개발자로써, 최적화를 수행하기 위해 수행, 고려할 수 있는 것들을 몇가지 정리해보겠다. 캐시 사용하기 반복적으로 실행되는 쿼리 결과를 캐시하여 DB에 쿼리를 보내는 횟수를 줄일 수 있다. Spring Boot에서는 캐시 관련 어노테이션을 사용하여 쉽게 캐시를 적용할 수 있다. 예를 들어 @Cacheable 어노테이션은 메서드의 반환값을 캐시에 저장하고, 이후 동일한 메서드를 호출할 때 캐시된 값을 반환한다. 인덱스 추가하기 쿼리 성능을 높이기 위해 인덱스를 추가할 수 있다. 인덱스는 특정 컬럼을 대상으로 빠른 검색을 가능하게 한다. Spring Boot에서는 JPA 어노테이션을 사용하여 인덱스를 추가할 수 있다. 예를 들어 @Index 어노테이션을 사용하여 엔티티 클래스의 필드에 인..
Test Environment 3인 유저 채팅방에서 채팅 추가 시, api의 속도를 확인하는 것으로 cache 적용 전 후 의 성능을 비교했습니다. 기본 전략 반복 읽기가 많은 데이터를 캐싱하였기에 lookl aside +write around 전략을 사용하고, 일관성 유지를 위해 데이터 수정 발생시 캐시 데이터를 버린 뒤, 이후 사용시 캐시를 다시 Hit시켜 캐시메모리에 변경사항을 로딩하는 방식을 사용했습니다. caching 적용 전 api 속도 sql 수행 횟수 기본적으로 chatroom, mem ber의 엔티티를 select하는 sql이 각각 수행되고, 해당 채팅을 db에 insert하는 명령어가 수행된다. 추가적으로, 캐싱을 적용하지 않았으므로 채팅 알림을 보내기 위해 채팅 방 내의 모든 멤버들의..
*김영한님의 스프링 MVC 강의를 기반으로 작성하였습니다. 웹 서버, 웹 애플리케이션 서버 HTTP: HTTP 메세지에 다양한 데이터를 담아 주고받는다. 웹 서버: 정적 리소스 담당. apache, Nginx 등. 웹 애플리케이션 서버(WAS): 동적, 정적 리소스 처리 가능. 하지만 애플리케이션 로직에 모든 것을 위임하면 안되기에 웹 서버에게 기본적으로 처리 가능한 것은 처리하게 시키고, 동적 리소스 같은 WAS에서 수행해야하는 일은 위임 로직으로 WAS에게 전달. (애플리케이션 로직은 가장 비싼 요소이다. 가장 중요한 애플리케이션 로직만 전담할 수 있다) ex) tomcat 정적 리소스가 많이 쓰이면 Web 서버 증설하고, 애플리케이션 리소스가 많이 쓰이면 WAS 증설 하는 것으로 효율적으로 리소스 ..
http://13.125.105.236/ 위 사이트 개발에 대한 정리글입니다. (AWS 배포가 중단되면 접속이 제한될 수 있습니다) https://github.com/shyswy/Community-Site GitHub - shyswy/Community-Site: Simple community Site Simple community Site. Contribute to shyswy/Community-Site development by creating an account on GitHub. github.com 위 링크는 프로젝트 리포지토리입니다. README를 자세히 작성했으니 참고하시면 됩니다. DTO: 각 계층간 정보 전달시 필요한 정보만 담아 전달. Ex: BoardDTO: 게시물(Board)에서 필요한..