전체 글 97

[JAVA] Spring WebFlux 에서 FCM(FireBase Cloud Messaging) 보내기

목차비동기 메시징FCM 에서의 pub/sub포그라운드와 백그라운드에서의 메시징(알람 + 데이터) 구조기능 구현 비동기 메세징비동기메시지를 보낸 순간 바로 응답을 기다리지 않아도 됨.FCM도 비동기 방식처리인데, 서버가 메시지를 큐(Queue) 에 저장해두고, 적절한 시점에 클라이언트에 전달하는 것동기 방식과의 차이동기 방식요청 → 서버 → 응답올때까지 기다림비동기 방식서버에서 FCM 으로 메시지 발송 → 기다리지 않음 → 클라이언트는 나중에 수신 FCM 에서의 Pub/SubPublisher(Pub) : 메시지 전송Subscriber : 특정 Topic 을 구독하고 있다가 메시지 수신Pub/Sub System : Publisher 에게 메시지를 받아서 Subscriber 에게 전달하는 중간 다리 역할 ..

JAVA (SPRING) 2025.04.17

[JAVA] 카카오 알림톡 API 구현 (Ncloud 환경)

알림톡 플로우1. 카카오 비즈니스 계정 / 채널 등록. 2. 템플릿 등록3. Ncloud 알림 서비스 설정 (서비스아이디, accessKey, secretKey, plusfriendId)4. 서버에서 알림톡 발송 API 호출5. 응답 처리 & 실패 대비알림톡 APIhttps://api.ncloud-docs.com/docs/ko/ai-application-service-sens-alimtalkv2 알림톡 API api.ncloud-docs.com해당 링크에서 알림톡에 필요한 오픈 API 가 있는데, 필자는 해당 가이드 참고하여 개발하였음. 먼저 개발하기 위한 조건이 있다.위의 알림톡 플로우에 3번까지는 되어있어야 알림톡을 발송할 수 있다. 그리고 해당 API 가이드 문서가 많아 보이지만, 실제로 개발해..

JAVA (SPRING) 2025.04.15

[Ubuntu-Nginx] EC2 인스턴스를 로컬 서버로 마이그레이션

목차 1. Ubuntu Ios, Nginx, PHP, Mysql, Java 설치 (본인 사용할 거 세팅에 맞게 설치하면 됨)2. EC2 인스턴스 복제 (키 파일이 있으면 복제 안해도됨)3. USB 파일 마운트4. Nginx 설정5. db 설정6. ssl 설정 (포트포워딩 설정) 1. Ubuntu Ios, Nginx, PHP, Mysql, Java 설치 Ubuntu 설치 Ubuntu 웹 페이지에서 iso 파일 다운로드부팅 USB 로 다운 받은 우분투 ISO 파일을 선택하여 설치이후 BIOS 에서 Ubuntu 접속Nginx, PHP, Mysql, Java 는 apt install 이름 만 하면 됨sudo apt install nginx sudo add-apt-repostitory ppa: ondrej/p..

Server 2025.04.15

[Nginx] Reverse Proxy Port Forwarding

목차1. Nginx 란?2. Reverse Proxy 와 Forward Proxy3. Nginx 를 통한 Port Forwarding  Nginx 란?   Nginx 는 경량 웹서버로 정적파일을 서빙하는 web server, 또는 요청을 다른 서버로 전달하는 reverse proxy server 로 활용되어 WAS (Web Application Server) 의 부하를 줄이는 로드 밸런서로 사용할 수 있다.Nginx 는 2가지 특징이 있다.1. Web Server 로 정적 컨텐츠를 처리함으로써, 동적 컨텐츠를 처리하는 WAS 의 부하를 줄일 수 있다.2. Reverse Proxy Server 로 내부 백엔드 서버로 전달하고, 응답을 클라이언트 포트로 다시 돌려보내는 역할을 한다.이번 포스팅에서 다뤄볼 주..

Server 2025.03.21

[JAVA] ObjectUtils, CollectionUtils

1. ObjectUtils주 용도:객체와 관련된 여러 공통 작업을 수행합니다.예를 들어, null인 경우 기본값 제공(defaultIfNull), 두 객체의 비교, 해시 코드 생성, toString 변환 등.사용 상황:단순한 null 체크 이상의 로직이 필요할 때.예를 들어, "값이 null이면 기본값을 반환"하는 로직을 구현할 때 ObjectUtils.defaultIfNull(obj, defaultValue)를 사용할 수 있습니다.라이브러리:Apache Commons Lang (또는 Spring에서도 유사한 ObjectUtils가 있음). 2. CollectionUtils주 용도:Collection(리스트, 셋 등)과 관련된 작업을 수행합니다.예를 들어, 컬렉션이 null이거나 비어있는지 검사(isEm..

JAVA (SPRING) 2025.03.06

[JAVA] LinkedHashSet

LinkedHashSet 구현 과정초기 단계 (Iterable):newLinkedHashSet() 메서드는 초기화 시에 여러 요소가 담긴 Iterable을 인자로 받습니다. 이 Iterable는 여러 요소(예: element1, element2, ...)를 포함합니다.반복 과정:메서드 내부에서는 전달된 Iterable을 반복하면서 각 요소를 LinkedHashSet에 추가합니다.LinkedHashSet:LinkedHashSet은 Set 인터페이스를 구현한 컬렉션으로, 요소의 중복을 허용하지 않으며 삽입 순서를 유지합니다.만약 단일 객체를 전달하면 반복할 수 없으므로 Iterable 형식(예: 단일 객체를 포함한 리스트나 Collections.singleton())으로 감싸야 합니다. List, Set, ..

JAVA (SPRING) 2025.03.05

IP-PBX 와 IP-Centrex 방식의 차이

목차1. 서론2. IP-PBX 란?3. IP-Centrex 란?4. 차이점 정리5. 클라이언트의 정보는 어떻게 받아와서 사용할까?  1. 서론 IP-PBX 와 IP-Centrex 는 모두 인터넷 전용회선을 이용한 사설 전화기로 기능 면에서는 사실상 차이가 없다.하지만 규모적인 측면과, 설치, 추가 관리등에 대해서 차이가 있다. 차이를 간단히 요약하자면, IP-PBX 는 기업이 직접 유지보수 운영을 하는 IP 기반 음성 통신 방식이며, IP-Centrex 는 통신사에서 유지보수를 해주, 클라우드 기반 서비스이다.보통 IP-Centrex 는 PBX 구축 운용이 어려운 가입자에게 제공되는 서비스로. 별도의 구내통신설비 없이도 각 지점 간에 IP-VPN 이나 광역 이더넷으로 연결하고, 단말까지는 LAN 을 통해..

JAVA (SPRING) 2025.02.18

OSI 7 Layer, TCP/IP 4Layer

TCP/IP가 OSI 모델보다 먼저 개발되었다.두 모델 모두 계층형이지만 서로의 계층이 정확히 일치하지는 않는다.TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 높지만 OSI모델은 실제로 구현되는 예가 거의 없어서 신뢰성이 낮다.OSI 모델은 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 개념적으로 사용되는 반면 실질적인 통신 자체는 TCP/IP 프로토콜을 사용한다.두 계층 모두 데이터 통신을 표현한 계층이지만, OSI 7 계층 : 데이터 통신에 필요한 계층과 역할을 정확하게 정의하려고 한 모델TCP/IP 4 계층 : 프로토콜의 중심으로 단순화된 모델 OSI 7 계층  7계층 - 응용 계층 (Application) : User Interface 제공사용자에게 보이는 부분. 최종 사용자에게 가장..

JAVA (SPRING) 2025.02.17

트랜잭션의 의미와 격리 수준 (Isolation Level)

목차트랜잭션 의미와 목적트랜잭션 특징 (ACID 속성)트랜잭션의 격리 수준 (Isolation Level)@Transactional 과의 관계결론 1. 트랜잭션이란?트랜잭션 : 데이터베이스에서 하나의 작업 단위를 의미 (하나 이상의 쿼리 즉, 일련의 쿼리 묶음으로 비즈니스 로직 관점에서 한꺼번에 실행되어야 할 작업) 하며, 데이터베이스의 상태를 변화시키는 하나 이상의 작업을 묶어서 처리하는 것을 말한다. 트랜잭션은 작업 단위가 완전히 실행 완료(Commit) 되거나, 실패했을 경우 작업 전 상태로 복구(Rollback) 되는 것을 보장한다.트랜잭션은 ACID 속성을 원칙으로 한다. 1-1. 트랜잭션의 목적트랜잭션은 데이터베이스 서버에 여러 클라이언트가 동시에 액세스 하거나, 응용프로그램이 갱신을 처리하는..

JAVA (SPRING) 2025.01.04

AWS Config ?

ConfigConfig 는 AWS 내 리소스에 대한 감사와 규정 준수 여부를 기록할 수 있게 해주는 서비스이다.설정된 규칙에 기반해 구성과 구성의 시간에 따른 변화를 기록할 수 있으며 이를 통해 필요할 경우 인프라를 빠르게 롤백하고 문제점을 찾아낼 수 있다.Config 로 해결할 수 있는 질문 : 1. " 보안 그룹에 제한되지 않은 SSH 접근이 있나? "  2. " 버킷에 공용 액세스가 있나?"3. " 시간이 지나며 변화한 ALB 구성이 있나? "이럴 경우 규칙이 규정을 준수하든 아니든 변화가 생길 때마다 SNS 알림을 받을 수 있다.Config 는 리전별 서비스이기 때문에 모든 리전별로 구성해야 하며 데이터를 중앙화 하기 위해 리전과 계정 간 데이터를 통합할 수 있다.또한 모든 리소스의 구성을 S3 ..

AWS 2024.11.07