카테고리 없음

데이터 분석가가 반드시 이해해야 할 모든 것 2일차

금수희 2023. 11. 10.

데이터 분석가가 반드시 이해해야 할 모든 것 2일차

WEight은 마케팅 뉴스 혹은 칼럼을 보고 내용을 요약한 뒤, 자신의 인사이트를 붙이는 마케팅 스터디입니다. 본 콘텐츠는 오픈애즈에 기고된 CJ ENM D레터의 넷플릭스, 디즈니 광고 요금제 출시에 숨은 개념 라는 기사를 바탕으로 작성되었습니다. 넷플릭스와 디즈니가 광고 요금제 도입을 앞당겼다. 두 플랫폼은 요금을 7.99로 동일하게 책정했다. 하지만 넷플릭스는 광고 요금제를 선택함으로써 기존 요금제보다. 더 저렴하게 사용할 수 있는 반면, 디즈니는 광고 없는 콘텐츠를 원한다면 더 비싼 요금제로 변경해야 합니다.

AVOD 광고 사업을 위해 개별적으로 넷플릭스는 MS마이크로소프트와, 디즈니는 TTD더트레이드데스크와 파트너십을 맺었다. 넷플릭스의 경우 상호 광고 사업 니즈에 부합, 번들링 시너지, IP 시너지의 면을 고려해 MS와 손을 잡았다.

 

 

데이터 분석가가 반드시 이해해야 할

게시글 작성

기능 사항

게시글은 제목, 내용, 생성 시간을 포함합니다. 게시글이 저장될 때 id도 같이 AUTOINCREMENT 형식으로 저장됩니다. 게시글 작성에 성공했을 때, 응답값으로 작성된 게시글에 대한 정보를 보여주어야 합니다.

게시글이 작성됐을 때 게시글에 대한 id 값과 작성이 완료됐다는 쪽지를 보여주어야 합니다. 검증 사항

게시글의 제목은 비어있다면 안 됩니다.

개선해도 여전한 문제

캡슐화 위반

데이터와 행동으로 객체를 정의했다. 한들, 메서드 이름, 파라미터 타입이 외부에 노출되고 있습니다. 외부 노출로 인해서 파급효과가 발생합니다.

결합도가 높다고 전시할 수 있어요. 응집도가 낮습니다. 캡슐화란 변할 수 있는 것 어떤 것이라도 감추는 것입니다.

내부속성을 감추는 것은 데이터 캡슐화로 캡슐화의 한가지 종류일 뿐 유연한 설계를 창조하기 위해서는 캡슐화를 설계의 첫 목표로 삼아야합니다.

 



Auditing

Level3의 요구사항으로 생성일을 저장하라는 요구사항이 있었습니다. Spring Data JPA는 Auditing 기능을 지원하는데 감시하다는 의미로 엔티티가 생성되고 수정되는 시점을 감지하여 JPA에서 자동적으로 기록해 줍니다. 해당 기능을 이용하기 위해서는 몇 가지 설정이 필요합니다. 첫째 필드에 감지기능을 사용하고자 요구하는 곳에 CreatedDate를 달아줍니다. 이를 통해 엔티티가 생성될 때 해당 필드에 자동적으로 값이 주입됩니다.

위의 애노테이션을 적용하기 위해서는 다른 리스너 설정이 필요합니다. 첫째 클래스 레벨에 EntityListenersAuditingEntityListener.class를 작성해 엔티티를 DB에 적용하기 전에 커스텀 콜백을 발생시켜 값을 주입해 주는 동작을 합니다.

게시글 전체 조회

게시글 전체 조회의 경우 일반적인 조회이지만, 최대 100개까지의 게시글을 볼 수 있고, 생성시간 기준 내림차순 정렬로 조회해야 합니다. 처음에는 단순히 Spring Data JPA가 제대기오염 주는 쿼리를 사용해 구성할까 했습니다. 하지만, 요구사항의 변화에 유연한 색의 대처하기 어렵다고 생각했습니다. Repository에 작성해 두면 편리하지만, 100개가 아닌 50개가 되고, 오름차순 정렬로 반환해야 한다면 결국 Repository 및 Service레이어에 모두 변화를 줍니다.

이는 좋지 못했습니다. 그러니까 Pageable을 활용하기로 했습니다. 페이징 기능의 디폴트 값으로 생성시간 내림차순 기준과 최대 100개의 게시글을 제공하도록 하지만, 원한다면 클라이언트에서 요청을 변경하여 요구할 수 있도록 요청 파라미터를 통해 전달받을 수 있도록 구성했습니다.

특정 게시글 검색 기능

특정 게시글에 대한 검색 기능을 살펴보면기존 전체 게시글에 대한 요구사항에서 단순히 제목으로 조회해야하는 요구사항이 추가됐음을 알 수 있었습니다. 제목에 적용되는 모든 게시글을 조회해야 하므로 새로운 API를 제공하기보다는 기존 전체 게시글 조회에서 쿼리 파라미터를 통해 필터링 옵션을 주었습니다. 컨트롤러에서는 keyword를 파라미터로 받아와서 null 체크만 해줍니다. null이라면 전체 게시글을 아니라면 키워드에 적용되는 게시글을 조회합니다.

이럴경우 키워드의 유효성을 Keyword 객체가 직접 하는데 내부적으로 공백을 제거한 키워드의 길이를 파악하여 2 미만인 경우에는 예외가 일어나고 그렇지 않다면 SQL의 LIKE를 이용하기 위해 앞 뒤에 를 붙여 저장합니다. 이후 키워드 및 페이징을 통해 조회한 모든 게시글을 반환해 줍니다.

자주 묻는 질문

게시글 작성

기능 사항 게시글은 제목, 내용, 생성 시간을 포함합니다 자세한 내용은 본문을 참고하세요.

개선해도 여전한 문제

캡슐화 위반데이터와 행동으로 객체를 정의했다 자세한 내용은 본문을 참고 해주시기 바랍니다.

개선해도 여전한 문제

Level3의 요구사항으로 생성일을 저장하라는 요구사항이 있었습니다 자세한 내용은 본문을 참고 해주시기 바랍니다.

댓글

💲 추천 글