전체 글 229

[Restful 아키텍쳐] RMM의 의미와 각 단계의 설계적 의의

아래 글은 Martin Fowler 의 Richardson Maturity Model - steps toward the glory of REST 를 읽고 정리한 내용입니다. ※ RMMRichardson Maturity Model (RMM)미국 개발자 Leonard Richardson이 제안한 RESTful API 성숙도 측정 모델RMM 은 API가 REST 원칙을 얼마나 잘 지키고 있는지를 Level 0 → Level 3 네 단계로 나누어 설명한다. RMM 단계Level 0 – The Swamp of POX : HTTP를 단순 데이터 운반(RPC) 용도로만 사용. 모든 요청이 하나의 엔드포인트로 감.ㄴ RPC : Remote Procedure Call, 원격 프로시저 호출 / 네트워크에 있는 다른 ..

카테고리 없음 2025.08.08

[CS] 멀티스레딩과 멀티프로세싱

▶ 프로세스컴퓨에서 실행중인 프로그램각각의 프로세스는 독립된 메모리 공간을 할당 받는다 ▶ 메인 메모리프로세스가 CPU 에서 실행되기 위해 대기하는 곳 ▶ IO(input/output)파일을 읽고 쓰거나, 네트워크의 어딘가와 데이터를 주고 받는 것입출력 장치(마우스, 키보드 등)와 데이터를 주거나 받는 것 ▶ 단일 프로세스 한 번에 하나의 프로그램만 실행됨단점 : CPU 사용률이 좋지 않음해결책 : "여러개의 프로그램을 메모리에 올려놓고 동시에 실행시키자" 라는 아이디어. IO 작업이 발생하면 다른 프로세스가 CPU 에서 실행됨. 이런 종류의 프로그램을 멀티프로그래밍 이라고 함 ▶ 멀티 프로그래밍여러개의 프로그램이 동시에 실행되는 것 ( IO 작업이 발생하면 다른 프로세스가 CPU 에서 실행됨 ) 목..

카테고리 없음 2025.08.07

[프로젝트] Mixed Content 오류로 인한 API 요청 차단 – Nginx를 통한 HTTPS 리버스 프록시로 해결

이슈 내용프론트엔드(React)가 HTTPS에서 서비스되는 반면, 백엔드(Spring API)는 HTTP로 서비스되고 있어 브라우저에서 Mixed Content 오류로 인해 API 요청이 차단되는 문제가 발생함. Mixed Content ? HTTPS 페이지가 HTTP 리소스를 요청할 경우 발생하는 보안 오류. 브라우저가 보안을 이유로 요청을 차단함. 이를 해결하기 위해 Nginx를 EC2 인스턴스에 설치하고, HTTPS 리버스 프록시를 구성하여모든 API 요청을 https://api.flybrief.site 도메인으로 안전하게 전달하는 구조로 변경한다. 문제HTTPS 페이지가 HTTP 리소스를 불러올 때 발생하는 보안 오류 해결 API 서버에 인증서 설치Nginx를 통해 HTTPS 리버스 프록시 구성모..

프로젝트 2025.07.18

[Spring] AOP 동작원리 : 리플렉션, JDK 동적 프록시

🎓 이 글은 인프런에서 제공하는 "스프링 핵심 원리 - 고급편" 강의를 수강하면서 정리한 내용을 바탕으로 작성한 글입니다.https://inf.run/FWeFN 이전글 에서 프록시를 사용해서 기존 코드를 변경하지 않고 부가기능을 적용하는 방법을 알아봤다. 그러나 클래스 기반 프록시의 경우 부가기능을 적용해야 하는 대상 클래스가 100개라면 프록시 클래스도 100개 만들어야 했다. 프록시 클래스를 하나만 만들어서 모든 곳에 적용할 수는 없을까 ? 자바가 기본으로 제공하는 JDK 동적 프록시 기술을 활용하면 프록시 객체를 동적으로 만들어낼 수 있다. JDK 동적 프록시를 이해하기 위해서는 먼저 자바의 리플렉션 기술을 이해해야 한다. ※ 리플렉션 기술리플렉션 기술을 통해 클래스나 메서드의 메타정보를 동적..

Spring 2025.06.12

[Spring] 디자인 패턴 : 원본 코드를 손대지 않고 부가기능 적용하기

🎓 이 글은 인프런에서 제공하는 "스프링 핵심 원리 - 고급편" 강의를 수강하면서 정리한 내용을 바탕으로 작성한 글입니다.https://inf.run/FWeFN 이전글 [Spring] 디자인 패턴 : 적은 코드 수정으로 공통 로직을 작성하기🎓 이 글은 인프런에서 제공하는 "스프링 핵심 원리 - 고급편" 강의를 수강하면서 정리한 내용을 바탕으로 작성한 글입니다.https://inf.run/FWeFN 적은 코드 수정으로 공통 로직을 작성할 수 있기 위feelfreetothink.tistory.com 템플릿 메서드 패턴, 전략 패턴, 템플릿 콜백 패턴을 사용하면 적은 코드 수정으로 공통로직(부가기능) 을 적용할 수 있었다. 그러나 결국 원본 코드를 수정해야한다는 단점이 있었다. 원본 코드를 손대지 않고 부..

카테고리 없음 2025.06.11

[Spring] 디자인 패턴 : 적은 코드 수정으로 공통 로직을 작성하기

🎓 이 글은 인프런에서 제공하는 "스프링 핵심 원리 - 고급편" 강의를 수강하면서 정리한 내용을 바탕으로 작성한 글입니다.https://inf.run/FWeFN 적은 코드 수정으로 공통 로직을 작성할 수 있기 위해 고안된 메서드 패턴을 소개한다. 공통 로직 (로그 추적기) 요구사항더보기* 모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력* 애플리케이션의 흐름을 변경하면 안됨 - 로그를 남긴다고 해서 비즈니스 로직의 동작에 영향을 주면 안됨* 메서드 호출에 걸린 시간* 정상 흐름과 예외 흐름 구분 - 예외 발생 시 예외 정보가 남아야 함* 메서드 호출의 깊이 표현* HTTP 요청을 구분* HTTP 요청 단위로 특정 ID 를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야 ..

Spring 2025.06.11

[프로젝트] 반려동물 자랑 토이프로젝트 소개

📌 프로젝트 개요“모여라 PAW PAW” 는 반려동물 자랑 커뮤니티입니다.회원 가입 후 이용할 수 있으며, 반려동물의 사진과 프로필을 등록해 다른 사람과 공유할 수 있습니다.좋아하는 단어, 싫어하는 단어, 한줄 소개 등을 통해 사용자와 반려동물 간의 교감을 표현합니다. 사용자는 등록된 반려동물 프로필을 보며 좋아요를 남길 수 있으며, 이를 기반으로 인기 랭킹이 구성됩니다.반려동물 이미지 등록 시 AI를 통한 반려동물 판별 기능을 적용하여, 등록된 이미지가 실제 반려동물인지 사전에 검증할 수 있도록 했습니다. Github Repo : https://github.com/HAN-SEOHYUN/wedlessInvite/issues✅ 목표아키텍처 분리, 예외 처리 등의 구조적인 설계실전 부하 테스트 경험공부중인..

프로젝트 2025.06.09

[k6] 배포 전 부하 테스트로 성능 병목 해결하기 – TPS 2배 향상

인프런에서 제공하는 "대규모 트래픽 처리를 위한 부하 테스트 입문/실전" 강의 수강을 마치고공부한 내용을 토이 프로젝트에 적용해본다. 개인 프로젝트를 배포하기 전에, 실제 트래픽을 가정한 부하 테스트를 시행해보았다. 그 결과, 애플리케이션의 최대 Throughput을 10 TPS → 20 TPS, 2배 향상시킬 수 있었다. 이 글은 그 과정을 정리한 기록이다. 부하 테스트 도구로 `k6`를 활용하여, 회원가입 API 에 점진적인 부하를 가하며 서버의 처리 한계와 병목 지점을 분석하고 개선하는 과정을 담고 있다. 부하 테스트 단계 목차부하 테스트 #1 – 기본 구조 점검 : Failed부하 테스트 #2 – DB를 별도 인스턴스로 분리 : Failed부하 테스트 #3 – 커넥션 상태 점검 및 DB 설..

TEST 2025.06.05

[AWS] 부하 테스트를 위한 CloudWatch 대시보드 구축 : 메모리 사용률까지 띄워보기

개인 프로젝트에서 부하 테스트를 진행하면서, CPU 사용률은 바로 시각화할 수 있었지만 메모리 사용률을 CloudWatch에 시각화하려고 하니 꽤나 복잡했다. 나중에 잊어버릴 것 같아서 이 글로 과정을 정리해보려 한다. 참고 강의: 수많은 EC2 인스턴스의 CPU/메모리 시각화해서 확인하기 : CloudWatch Resource Health 📚 전체 단계 요약 (목차)IAM 역할 생성EC2 인스턴스에 IAM 역할 할당CloudWatch Agent 설치파라미터 스토어에 Agent 설정 등록CloudWatch Agent 시작 명령 실행리소스 상태 확인CloudWatch Dashboard 생성💡 CloudWatch Resource Health란?CloudWatch Resource Health는 Amazo..

AWS 2025.05.30

[로드맵] 클린코드 : 사고의 흐름

🎓 이 글은 인프런에서 제공하는 박우빈님의 "클린 코드 & 테스트 코드 가이드 로드맵" 강의를 수강하면서 정리한 내용을 바탕으로 작성한 글입니다.https://www.inflearn.com/roadmaps/5699 클린 코드 & 테스트 코드 가이드 로드맵 로드맵 - 인프런Spring, TDD 스킬을 학습할 수 있는 로드맵을 인프런에서 만나보세요.www.inflearn.com 코드를 읽을 때 뇌 메모리 적게 쓰도록 도와주는(=가독성 좋은) 코드 작성 1. Early return- Early return 의 사용으로 else 의 사용을 줄이자- switch 문 지양 2. 중첩 분기문과 중첩 반복문의 리팩토링중첩 반복문은 내가 기억해야하는 정보가 너무 많다.for (let i = 0; i = 2 && j ..

카테고리 없음 2025.05.30