본문 바로가기

Backend6

[Spring/Java] FCM을 통해 Push 알림 보내기 프로젝트 마지막 즈음에 push 알림 기능을 추가했다. 기획 의도와 잘 맞아서 좋았지만, 개발 기간이 짧아서 다양한 방법들 중에 fcm을 선택했다.  FCM이란? Firebase Cloud Messaging은 Google의 Firebase 플랫폼에서 제공하는 클라우드 메시징 서비스로, 개발자는 이를 통해 간편히 안드로이드, iOS, 웹 애플리케이션에 푸시 알림을 보낼 수 있다. 장점- Firebase 플랫폼과 통합되어 있어 설정과 사용이 간편하다. Firebase 콘솔에서 설정을 쉽게 관리할 수 있다. - 안드로이드, iOS, 웹을 포함한 여러 플랫폼에서 사용 가능하다. - Google의 인프라를 기반으로 하여, 대량의 메시지를 안정적으로 처리할 수 있다. - FCM은 무료로 제공되며, 추가 비용 없이 .. 2024. 7. 8.
[Spring/Java] CORS란? 해결법은? CORS란? Cross-Origin Resource Sharing = 교차 출처 리소스 공유 정책 자세히는 추후 말하겠다. 출처(Origin)란? URL의 Protocol + Host + Port를 의미하는데, 간단히 말해선 웹 페이지나 리소스의 출처를 나타내는 개념이다. 그러면, 아무래도 보안 때문에 같은 출처끼리의 리소스를 공유하는 정책이랑 다른 출처끼리의 리소스를 공유하는 정책이 각각 존재할 것 같다는 생각이 든다. 1. SOP (Same-Origin Policy)동일 출처 정책은 웹 브라우저가 동일한 출처에서만 리소스를 공유하도록 제한하는 보안 정책이다. 기본적으로 같은 출처끼리는 리소스를 공유할 수 있도록 허용된다. 만일, 다른 출처끼리도 제약 없이 공유가 허용된다면, 해커가 개인정보를 가로챌 .. 2024. 7. 7.
[Spring/Java] 동시성 제어 통한 게시물 좋아요 및 댓글 수 관리 (비관적 락, 반정규화, 세마포어) 상황게시물에 좋아요 버튼을 누르면 좋아요 수가 1씩 증가하거나 감소해야하고, 댓글을 작성하거나 삭제하면 댓글 수가 1씩 증가하거나 감소해야 했다. 그런데, 그런 요청이 있을 때마다 좋아요 댓글 수 컬럼 값을 1씩 증가하거나 1씩 감소시키게 된다면, 충돌의 위험이 있었고, 데이터 무결성에 문제가 생길 수 있었다. 그래서 충돌을 방지하여 데이터 무결성을 높이는 락을 사용해야 했다. 하지만, 동시성 처리가 많은 상황에서는 락 경합이 빈번하게 발생하여 락 대기 시간이 길어질 수 있었고, 데이터베이스의 성능이 저하될 수 있었다. 해결방법 [ 1. 별도의 테이블을 사용하여 성능 향상 ]좋아요와 댓글에 대한 테이블을 따로 만들고, 생성이 될 때마다 데이터를 하나씩 추가시키고 삭제할때마다 해당 데이터를 하니씩 삭제했다.. 2024. 7. 7.
[Sping/Java] JPQL vs QueryDSL JPQL(Java Persistence Query Language)과 QueryDSL은 둘 다 Java 애플리케이션에서 데이터베이스 쿼리를 작성하는 데 사용되지만, 접근 방식과 사용 용도에서 차이가 있다. 1. JPQL (Java Persistence Query Language) JPA의 일부로, 쿼리를 테이블이 아닌 엔티티 객체를 대상으로 작성하는 정적인 객체지향 쿼리 언어이다.  JPQL은 SQL과 유사한 문법을 사용하지만, 데이터베이스 테이블 대신 Java 엔티티 객체를 다루며, 필드나 속성을 통해 데이터베이스 레코드를 조회하고 조작할 수 있다. 이를 통해 데이터베이스와의 상호작용을 객체지향적으로 처리할 수 있게 해준다.@Entitypublic class Board { @Id @Gener.. 2024. 7. 7.