프로젝트14 [기술적 선택] Elasticsearch 도입 이유 및 성능 측정 ELK-Stack의 E는 Elasticsearch를 의미한다. 필자는 해당 기술을 사용해 로그 수집의 기능을 구현하였고, 또 한가지가 더 있다. Elasticsearch를 이용하여 프로젝트의 핵심 기능인 검색 서비스를 추가한 것이다. 필자가 진행한 프로젝트는 '개발자 커뮤니티 사이트'이며 지금의 티스토리처럼 게시글을 업로드할 수 있다. 또한, 게시글을 업로드하게 되면 남들이 올린 게시글들이 모두 통합된 커뮤니티 페이지에서 보여진다. 해당 페이지에서 찾고자 하는 키워드로 검색을 하면 제목에 해당되는 글뿐만 아니라 내용에도 해당 키워드가 존재한다면 검색이 가능하다. 그냥 관계형 데이터 베이스에서 like문을 활용하여 키워드 검색을 하면 되는 거 아니냐는 질문이 들어올 수도 있다. 하지만 키워드 검색을 위해 .. 프로젝트/기술적 선택 2023. 6. 6. [기술적 선택] 쿼리 성능 개선을 위한 INDEX 적용 프로젝트에서 쿼리 성능을 높이기 위해 아래와 같은 방식을 도입하여 로컬에서 성능 테스트를 하였다. 해당 테스트를 통해 쿼리 성능의 차이를 보고 프로젝트에 적용하게 되었다. 저장 프로시저 사용하기 프로시저란 SQL 문장을 선언해서 MySQL에 저장하고 해당 SQL 을 마치 함수처럼 사용하는 것이다. 즉, 만들어 두면 함수 호출하듯이 편하게 사용하는 것이다. 프로시저 활용 create database academy; use academy; 먼저, academy 라는 데이터베이스를 만들고 해당 데이터베이스를 사용한다. create table user ( id int not null, name varchar(100), campus varchar(100), class int, gi int, PRIMARY KEY .. 프로젝트/기술적 선택 2023. 6. 6. [기술적 선택] JPA 구동 방식과 영속성 컨텍스트 구동방식 오늘 포스팅은 JPA 구동방식에 대해 간단하게 설명을 하고 어떤 객체들을 생성을 해서 트랜잭션이 이루어지는지 확인해보려고 한다. JPA는 자바 애플리케이션과 JDBC API 사이에서 동작이 된다. 즉, 개발자가 JPA에게 명령하면 JPA가 JDBC API를 사용해서 SQL을 호출하고 결과를 받아서 동작하는 것이다. 1. Persistence 클래스에서 META-INF/persistence.xml 에서 설정 정보를 읽는다. 2. EntityManagerFactory를 만든다. 3. EntityManager를 필요할 때마다 생성해서 JPA를 동작한다. 먼저, Entity라는 것 DB의 테이블과 매칭이 되는 개념이라고 보면 된다. 예를들면, Member 테이블에 id와 name 이라는 컬럼이 존재한다.. 프로젝트/기술적 선택 2023. 1. 5. [기술적 선택] JPA 선택 이유 개요 필자는 올해 상반기 JPA를 활용한 프로젝트를 진행한 바 있다. 하지만 가장 중요한 점은 어떻게 동작하는지에 대한 확실한 개념없이 프로젝트를 진행했던 터라 JPA 에 대해 자세히 물어보면 죄송합니다부터 나올 거라고 생각한다. 최근 네이버, 카카오 같은 IT 기업에서 면접을 보고 느꼈던 것은 "왜 이 기술을 사용했는지, 어떻게 동작하는지"에 대해 깊게 생각하고 고민하고 파고드는 개발자를 원한다는 것을 간접적으로 뼈저리게 느꼈다. 그래서 오늘은 JPA를 대체 왜 쓰는가부터 천천히 정리해 볼 생각이다. SQL 의 문제점 보통 프로젝트를 진행하면 스프링과 데이터베이스와 연동을 하면서 서로 데이터를 넣고 받는 역할을 많이 한다. 그렇다면 데이터베이스의 데이터를 얻기 위해서는 수많은 쿼리문들을 개발자들이 짜야.. 프로젝트/기술적 선택 2022. 12. 27. 이전 1 2 다음 반응형