일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 인공지능
- 자료구조
- 클라우드컴퓨팅
- 사이버보안
- 데이터과학
- 디자인패턴
- I'm Sorry
- 딥러닝
- 네트워크보안
- 웹개발
- 데이터분석
- 컴퓨터공학
- Yes
- 파이썬
- 컴퓨터비전
- 소프트웨어공학
- 네트워크
- 머신러닝
- 소프트웨어
- 프로그래밍
- 자바스크립트
- 데이터베이스
- 컴퓨터과학
- 보안
- 프로그래밍언어
- 알고리즘
- 버전관리
- 빅데이터
- springboot
- 데이터구조
- Today
- Total
목록2025/07 (233)
스택큐힙리스트
왜 Kotlin Delegation + Proxy 조합이 핫할까?Java에선 Proxy.newProxyInstance()·CGLIB 설정이 필수인데, Kotlin은 클래스 위임(class delegation) 문법 하나로 프록시를 뚝딱 만들 수 있다. by 키워드가 “이 인터페이스 구현은 저 객체에 전부 맡겨라”라고 선언해 주기 때문!핵심 아이디어: 위임 으로 ‘대리 접근’ 꿰차기Proxy 패턴이 원하는 건 “원본 객체 앞에 서서 접근을 제어”하는 것. Kotlin의 class delegation은 이미 메서드 호출을 원본에게 자동 위임해 주므로, 우리는 오버라이드할 메서드에 로깅·캐싱·권한 체크만 얹으면 끝이다.코드 ① – 로깅 프록시를 세 줄로interface OrderService { fun ..
1️⃣ Proxy 패턴, 한마디 정의‘Proxy(프록시)’는 대리인이라는 뜻 그대로, 원본 객체 앞에 서서 호출을 가로채거나 대신 처리하는 구조(Structural) 패턴이다. 클라이언트는 Proxy를 통해서만 원본에 접근하므로, 접근 제어·로깅·캐싱·지연 로딩 등을 가볍게 끼워 넣을 수 있다.2️⃣ 언제 써먹으면 좋은가?로깅·메트릭 수집 – 모든 서비스 메서드 앞뒤에 실행 시간을 재려 할 때보안·권한 체크 – 호출자 정보 확인 후 원본 메서드 실행 허용 여부 결정캐싱 – 동일 파라미터로 반복 호출 시 결과를 캐시해 DB 부하 절감가상 프록시(Virtual) – 고비용 객체를 ‘필요할 때만’ 초기화해 메모리 세이브이처럼 “추가 책임을 원본 코드 수정 없이 붙이고 싶다”는 요구가 나오면 Proxy가 정답이..
1. 왜 둘을 비교해야 하나?스프링 서비스를 AWS 에 올리려면 “코드를 커밋한 순간부터 프로덕션까지” 흐름이 안정적이어야 합니다.GitHub Actions → GitHub 저장소와 곧바로 연동, 다양한 워크플로 Marketplace, 멀티 클라우드 지향.AWS CodePipeline + CodeDeploy → AWS 권한 경계를 벗어나지 않고 IAM 역할·CloudWatch·Auto Rollback 같은 네이티브 기능이 즉시 사용 가능.둘 중 무엇을 선택하느냐에 따라 비용·보안·러닝커브·배포 전략이 달라집니다.2. GitHub Actions 한눈에구성: .github/workflows/*.yml 파일에 파이프라인 정의, Event 기반 트리거, 병렬 Job.Runner: GitHub-호스티드(자동) 또..
왜 지금 ‘배포 자동화’에 집중해야 할까?서비스가 성장할수록 “서버 잠깐 내릴게요!”라는 말은 곧 사용자 이탈로 직결됩니다. 배포가 초 단위로 끝나더라도, 그 사이에 접속한 유저에게는 502 Bad Gateway가 찍히죠. 이번 14일차에서는 Docker + GitHub Actions + AWS EC2를 이용해 코드 push → 빌드 → 테스트 → 배포 → 헬스체크까지 전 과정을 자동화하고, 트래픽 손실 없는 무중단 배포(블루-그린 패턴)를 구축합니다.1️⃣ Dockerfile: 가볍고 안전하게 빌드하기# 1단계: 컴파일FROM eclipse-temurin:21 as builderWORKDIR /appCOPY . .RUN ./mvnw -Dmaven.test.skip=true package# 2단계: 실행..