분류 전체보기 99

[JAVA] NCP Cloud Outbound Mailer 로 메일 보내기 (RestTemplate)

순서 1. Domain Management 에서 이메일 발송 주소로 사용할 도메인 등록2. SPF / DKIM / DMARC 인증이 완료되면, DNS 레코드에 TXT Type 으로 레코드 추가 설정3. Manage template 에서 메세지 템플릿 등록4. ncp open api 호출5. 메일 발송 시작하기 앞 서 ncp open-api 호출하기 위해 필요한 것은ncp.access-key 와 secret-key 가 필요하다. 이건 마이페이지에서 생성 가능하다. 1. Domain Management 에 도메인 등록 2. 레코드 설정NCP 의 Global DNS에서 SPF, DKIM, DMARC 에 대한 레코드를 추가해준다. 여기서 주의할 점은 메일 수신자 도메인이 naver 일 경우에는 dkim 에 ..

JAVA (SPRING) 2025.06.18

[JAVA] Spring WebFlux의 WebClient 를 사용한 비동기 API 호출

WebClient 란?RestTemplate 과는 다른 비동기성으로 Netty 를 기반으로 하는 Non-blocking I/O 클라이언트이다.: 동시에 많은 API 요청을 효율적으로 처리하고, 응답을 기다리는 동안 스레드를 블로킹하지 않아서, CPU 를 효율적으로 사용할 수 있다.반응형 (Reactive) : WebClient 는 요청 결과를 Mono 나 Flux 와 같은 반응형 타입으로 반환하는데, 이는 결과가 "미래에 올 것" 임을 나타내며 Mono 나 Flux 에 다양한 연산자를 체이닝(flatMap) 하여 비동기적으로 데이터 처리 흐름을 구축할 수 있다. → 여기서 Mono 나 Flux 는 Spring WebFlux 기반에서 제공하는 Reactive Stream 의 한 종류로 비동기 작업의 결과값..

JAVA (SPRING) 2025.05.27

[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 을 통해..

Server 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 제공사용자에게 보이는 부분. 최종 사용자에게 가장..

Server 2025.02.17