들어가기전에 SSR 의 대표적인 도구로 JSP CSR 의 대표적인 도구로 React.js SSR 은 SEO 작업을 해야할 때 사용한다. 학생때는 딱 이 정도 깊이로만 알고 있었는데 HTML을 PDF 로 변환하는 작업을 진행하면서 개념이 정확히 정립된 것 같아 내용을 공유하고자 합니다. SSR 과 CSR 을 구분하는 기준 SSR 과 CSR을 구분하는 기준은 아래와 같습니다. 바로 서버에 요청 시 완성된 HTML DOM 을 Response 로 반환을 하느냐 인데요. 다른말로 표현하자면 JavaScript 가 HTML DOM 을 조작하느냐 아니냐로 구분된다 할 수 있습니다. Response 로 전달된 HTML 가 JS 실행 전과 실행 후가 동일하다면 SSR, 다르다면 CSR 로 보셔도 무방합니다. 글로만 설명..
-
[회고록] 프로젝트 시작 후 3개월, 나는 그동안 무엇을 했을까 (PocketMark v1.0)
12월초에 팀 프로젝트 PocketMark 를 시작하여 3개월의 시간이 흘렀다. 경험하고 싶었던 나 자신과의 싸움(레거시 리팩토링)은 실컷 경험할 수 있어서 좋았지만 이때 쯤이면 솔직히 계획했던 메인서비스와 기본적인 부가서비스들이 모두 구현완료되어 있을 줄 알았다. 자동차는 아니더라도 자전거 정도는 만들어질 줄 알았었는데 대신 킥보드가 만들어져 있었다. 뭐... 일단 굴러가기는 하니 다행이라고 해야하나... 팀원 한분이 취직으로 그만 두셨지만 나는 앞으로도 계속 사이드프로젝트로 두고 키워나갈 예정이다. 3개월간 내가 한 일은 크게 두 가지이다. 첫번째는 사용자 도메인(회원, 로그인, 인증)을 제외 한 모든 도메인의 설계와 서비스 로직을 구현하고 개선 하는 일. 두번째는 반복적으로 해야만했던 노가다성 작업..
-
CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (1) - CSRF 공격이란 무엇인가
해당 포스팅 시리즈는 현재 목차 2번까지 작성되었습니다. 목차 1. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (1) - CSRF 공격이란 무엇인가 2. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (2) - 가상의 브라우저에 대한 CSRF 공격, 서버의 책임과 브라우저의 책임 3. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (3) - CSRF 공격을 직접 시도해보자 (Safari 브라우저) 4. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (4) - SOP, CORS, Browser, Third-Party Cookie, SameSite) 5. ..
-
[AWS] AWS WAF 적용 시, 주의해야 할 Default 설정들
AWS Immersion Day 에서 소개 받은 AWS WAF v2 를 적용하면서 Default 설정 때문에 필자가 직면했던 문제점들에 대한 포스팅입니다. 이전 포스팅 [AWS] 서비스에 WAF 적용하기 WAF 란? WAF(Web application firewall) 는 OSI 4레벨 layer 가 아닌 7레벨 Layer 에 적용되는 방화벽이다. WAF 라는 서비스를 사용하여 OWASP’s Top 10 Web Application Vulnerabilities 에 대한 방어를 어느정도 쉽게 구축할 developer-ping9.tistory.com 서론 보통 회사의 직원으로써 자사상품은 항상 좋은점만 소개한다. AWS WAF 도 그랬다... (그래서 홀렸다...) AWS 에서 제공하는 Rule 들로 WAF..
-
[Network] DNS 동작원리 간단정리 (+ nslookup)
이 글은 아래의 포스팅의 내용을 재구성한 포스팅입니다. DNS란 뭐고, 네임서버란 뭔지 개념정리 | 살살살림 DNS란 건 뭐고, DNS 서버란 건 뭐고, 네임서버란 건 뭐고 이름부터 혼란스러운 개념. 사용자의 입장에서 왜 DNS 역할이 필요한지와 추천할 만한 무료 네임서버에 대해서 알.아.보.자. gentlysallim.com DNS 동작개요 DNS Server 관리 주체 Authoritative DNS Server 를 보통 네임서버라고 부른다. DNS 검색속도 및 캐싱 적중률 대부분의 요청은 통신사의 ISP 서버의 캐싱으로 동작한다. (70%~90% 적중) 캐시가 적중하지 않을 경우 네임서버(Authoritative DNS Server)의 성능에 따라 도메인의 검색속도에 영향을 줄 수 있다. 검색속도 ..
-
커스텀 어노테이션을 직접만들어 개발비용을 줄여보자!
개인적인 주관이 섞여있는 포스팅으로 정답은 아닙니다. 범용적이고 관례적인 어노테이션은 동료개발자와 협업에 유리한 이점이 있다는 것 고려하시며 Trade-off 를 저울질 해보시길 바랍니다. 커스텀 어노테이션을 동료개발자와 충분한 협의 없이 사용 시 유지보수비용이 증가하게 됩니다. 필자가 불편했던 어노테이션들 대표적으로 @PreAuthorize, @Sql, @RequestMapping 등과 같이 String 값을 반복적으로 넣어주어야 하는 어노테이션들이 매우 불편하게 느껴졌다. 사용빈도는 꽤 큰 것에 비해, IDE 자동완성 기능 이후 따로 String 값을 지정해주어야 하는 두번의 작업으로 느껴졌다. @GetMapping("/product/vip") @PreAuthorize("hasRole('ROLE_VI..
-
[AWS] Setting up Cloudfront signed cookies for multiple paths in Java, Kotlin
What we need to do 1. Find AWS SDK Library 2. Assgin openssl rsa public key to Cloudfront 3. Set SignedCookie to Response in Application Code Example Kotlin Code fun getBookContentResponse( req: HttpServletRequest, res: HttpServletResponse, bookContentId: String ): BookContentResponse { val expireCalendar = Calendar.getInstance() expireCalendar.add(Calendar.MINUTE, 60) val resourcePath = "$bookC..
최근 포스트
-
`@Volatile` 이해하기Kotlin 2025.12.31 16:05
@Volatileprivate var something: Something 동료분이 해당 코드에 리뷰를 해주었다. @Volatile 은 ThreadLocal 에 저장하는 키워드로 알고 있는데, Webflux + 코루틴 환경에서 문제가 없을까요? @Volatile 은 CPU 캐시가 아닌 메인 메모리를 보게하는 명령어라고만 알고 있었다.문제가 없어보이지만 혹시 내가 아는게 다르지 않을까 싶어 여러 문서를 뒤져보고 알게 된 지식을 정리하고자 한다.# VolatileCPU 캐시는 ThreadLocal(JVM Heap 에 저장되는 자료구조) 에 저장되는 값이 아닌 OS 의 CPU Core 에 저장되는 캐시이다.@Volatile 키워드는 메모리 모델 상의 happens-before 관계만 정의한다. 즉, JVM..
-
gRPC Unary 와 REST API 속도 차이 (1) - 직렬화, 역직렬화gRPC 2025.07.17 10:13
직렬화 포맷 (Protocol Buffers vs JSON)조금만 검색해보아도 gRPC 는 데이터 직렬화를 바이너리로 하니 더 빠르다는 정보를 찾을 수 있다.JSON 도 직렬화하면 바이너리로 변환되는데 무슨 차이점이 있을까?그래서, 정확히 어떤 방식으로 데이터가 직렬화 되기에 페이로드가 짧아지는지 알아보자.JSON 직렬화JSON 문자열을 바이너리로 바꾼다는 건, 해당 문자열을 UTF-8 바이트 시퀀스로 변환하는 것을 말한다.{ "name": "Alice", "age": 30} 위 데이터를 바이트 시퀀스(16진수)로 직렬화하면 7b 22 6e 61 6d 65 22 3a 22 41 6c 69 63 65 22 2c 22 61 67 65 22 3a 33 30 7d 총 25 bytes JSON 문자열바이트{7..
-
[Network] DHCP 에 대해 정말 간략히 알아보자Network Basis 2025.01.26 19:35
DHCP(Dynamic Host Configuration Protocol)네트워크에 연결된 장치(클라이언트)에게 자동으로 IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버 등 네트워크 설정 정보를 할당하는 프로토콜 과거에는 IP를 고정적으로 수동할당하였다. IP 충돌이나 고갈을 해결하기 위하여 나온 자동할당 프로토콜이다. DHCP 서버DHCP 서버는 주로 라우터에 위치한다. 경우에 따라 전용 DHCP 서버를 개설하여 관리할 수 있다.
-
[Network] ARP 와 RARP (MAC 주소가 필요한 이유)Network Basis 2025.01.26 19:28
들어가기 전에 IP 주소MAC 주소정의네트워크 상에서 논리적 식별자하드웨어 네트워크 인터페이스의 물리적 주소OSI 계층3계층 (네트워크 계층)패킷 전달을 위해 사용2계층 (데이터 링크 계층)프레임 전송을 위해 사용목적전 세계, 인터넷 통신로컬 네트워크 내부 통신변경 여부네트워크에 따라 변경 가능기본적으로 변경 불가능 (제조 시 할당)할당 방식정적 또는 동적 (DHCP)하드웨어에서 자동 할당역할장치의 논리적 위치 식별로컬 네트워크 내 데이터 전송 식별 개요 ARP 와 RARPNDP정의IP 주소와 MAC 주소(장치의 물리적 주소)를 상호 변환하는 데 사용되는 프로토콜사용범위IPv4 네트워크IPv6 네트워크 IP 로만 데이터를 전송할 수는 없나? MAC 주소를 왜 꼭 알아야하는가?대부분의 네트워크 장치는 ..
-
[Network] 전달한 패킷이 네트워크 장치가 수용할 수 있는 크기보다 크다면? (MTU, MSS, PMTUD)Network Basis 2025.01.18 20:23
들어가기전에OSI 7 Layer 의 2계층인 Data Link Layer 에서는 Ethernet 프로토콜을 사용한다. 네트워크 장치들이 모두 OSI 7계층 모델을 사용하는 것은 아니지만, 네트워크 통신을 수행하는 장치들은 OSI 모델의 계층 중 일부를 사용하거나 참고한다. LAN(Local Area Network)을 구성하기 위해 네트워크 카드(NIC), 스위치, 라우터, 허브, 액세스 포인트 등과 같은 네트워크 장치가 사용되는데, 이러한 네트워크 장치를 통하여 데이터가 전달된다. 우리는 전송할 데이터를 쪼개어 전송하게 되는데 쪼개어진 데이터를 *패킷이라고 칭하며, 일반적으로 패킷의 크기가 클수록 대역폭(Bandwidth)을 효과적으로 사용할 수 있다. 난 효율적인게 좋아!우리집 인터넷은 1Gbps ..