0. 어디까지가 클라이언트의 역할이고, 어디서부터 서버 개발자의 역할인가? 이 질문에 대해서 정말 오랫동안 고민해왔다. 웹 개발의 경우에는 REST API 방식을 사용해서 백엔드에서 모든 OAuth 인증 처리를 해결해야 하기에 별 고민이 없었다. 그런데 네이티브 앱 개발의 경우에는 Android SDK와 iOS SDK라는 게 존재하니까... 서버에서는 어...
현재 스코어는 회원가입 및 온보딩 페이지 외에는 모두 소셜 로그인 인증 완료 후 발급되는 JWT 토큰이 Authorization 헤더에 있어야만 접속할 수 있게 구현되어 있다. 를 상속받아 커스텀 Authentication Filter를 구현해서 매 요청이 발생할 때마다 헤더에 있는 JWT 토큰을 검증하도록 했기 때문이다. 그래서 기능을 테스트하기 위해 요...
스코어에는 다대다 관계가 매우 많이 나타난다. 솔직히 처음에는 일단 돌아가게 만들자는 마음으로 팀원 분이 추가해 둔 를 그냥 흐린 눈 하고 넘어갔었는데, 조회 시 너무 번거로워 이대로는 안 되겠다고 느꼈다. 초반에는 그래도 중간 테이블을 생성해보려고 했었으나 그것도 그
솔직히 그동안 기능 구현하기에 바빠서 예외 처리에 잘 신경을 못 썼다. 그러다 보니 프론트엔드 개발자 분들이 테스트하실 때 예외가 발생하면 Response Body가 텅~ 비어 있어서 원인 확인하려고 매번 내가 콘솔 로그를 뒤져야 했다.... 그 시간을 기다려주시는 프론트엔드 개발자분들께 정말 죄송했다. 그래서 이젠 정말 이대로는 안 되겠다는 걸 느끼고 예...
얼마 전에, AWS로부터 4월 30일에 프리티어가 만료된다는 슬픈 메일을 받았다...ㅜㅜ 곧 서비스가 론칭될 상황이라 본격적으로 리소스가 많이 사용될 예정이었기 때문에 걱정이 되지 않을 수 없었다. 서비스가 론칭된 이후에는 지금처럼 새롭게 세팅하고 할 여유가 더 없어질 것 같아서, 결국에는 새로운 AWS 계정으로 갈아 타기로 결정했다. 프리티어 유목 생활을...
1. CloudFront 배포 생성 AWS 콘솔에서 CloudFront 배포 생성을 클릭한다. Distribution options에서 'Single website or app' 선택. Origin domain으로는 연동하고자 하는 s3 버킷을 선택한다. Origin domain을 선택하면 이름은 자동으로 작성될 것이다. S3
스코어의 기본 기능 구현이 웬만큼 완료되어서 출시가 된 상태이다. 그래서 이번 하반기에는 성능 향상 경험을 쌓아 보는 것을 목표로 하려고 한다. 단순히 체감상 성능이 향상됐다! 이건 신빙성이 낮기 때문에, 객관적으로 성능을 측정하고 비교할 수 있는 테스트 툴을 배워보고자 했다. 성능 테스트 툴에는 여러가지가 있는데, 그중에서도 가장 많이 알려져 있고 다양한...
1. 발단 이전 글에도 썼듯이 요즘 Apache JMeter를 통해서 성능 테스트를 해보고 있다. 그런데 성능 테스트를 위해서 반복적으로 HTTP 요청을 보내다 보니 특정 API에서 간헐적으로 오류가 발생했다. 요청을 보낸 시점에 어떤 유저가 피드에 추가한 감정 표현이 이미 존재한다면 해당 감정 표현을 삭제하고, 추가되어 있는 감정 표현이 존재하지 않는 상...
Spring Framework의 특징 POJO 기반의 경량 컨테이너 제공 Spring Framework에서 개발자는 POJO 클래스를 개발하고 스프링 컨테이너는 이 POJO 객체(스프링 빈)를 관리한다. POJO 객체는 특정 기술에 종속되지 않는 순수 자바 객체를 의미한다. Spring Framework에서는 프레임워크의 메서드가 사용자 클래스에 구현되지 ...
ORM이란? 객체와 RDB 간의 패러다임 불일치 문제 비즈니스 요구사항을 정의한 도메인 모델을 객체로 모델링하면 객체지향 언어가 가진 장점들을 활용할 수 있다. 하지만 문제는 객체 인스턴스를 생성한 후이다. RDB는 데이터 중심으로 구조화되어 있고, 집합적인 사고를 요구한다. 객체 지향에서의 추상화, 상속, 다형성 등의 개념이 존재하지 않는다. 이처럼 ...
1. 엔티티 매니저 팩토리와 앤티티 매니저 1.1. 엔티티 매니저 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 엔티티 매니저 팩토리에서 생성되며, 생성하는 비용이 거의 들지 않는다. 스레드 안전하지 않다. 따라서 하나의 엔티티 매니저에 여러 스레드가 동시에 접근할 경우 동시성 문제가 발생하므로 스레드 간 공유할...