들어가기전에 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..
최근 포스트
-
[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 ..
-
[Network] 노드와 네트워크 장치, 링크와 회선Network Basis 2025.01.17 17:53
1. 노드 (Node)정의:데이터를 생성하거나 소비하는 장치예시:클라이언트 노드: 컴퓨터, 스마트폰, IoT 기기 등서버 노드: 웹 서버, 데이터베이스 서버기타 노드: 네트워크 프린터, NAS(Network Attached Storage), IoT 센서특징:일반적으로 데이터의 생성 또는 최종 소비를 담당사용자가 직접 상호작용하는 장치가 많음 2. 네트워크 장비 (Network Device)정의:노드 간의 데이터 흐름을 관리하고 최적화하는 데 사용되는 장치자체적으로 데이터를 생성하거나 소비하지는 않지만, 데이터를 전달하거나 처리하는 데 중요한 역할을 수행예시:스위치(Switch): LAN(Local Area Network)에서 데이터를 전달라우터(Router): 서로 다른 네트워크 간 데이터 전송을 관리허..
-
[Spring] 트랜잭션에 대한 실험과 고찰 (Self-invocation, 프록시가 메서드를 실행하기까지의 과정)Spring Framework 2024.12.01 21:36
[Spring] 예외 발생시 Spring DB 트랜잭션 롤백 안되는 경우배경지식Checked Exception 은 개발자가 인지한 예외라 약속한다.Unchecked Exception 은 개발자가 인지하지 못한 예외라 약속한다.try-catch 문에서 catch 된 Exception 은 개발자가 인지한 예외라 약속한다.스프developer-ping9.tistory.com Spring DB 트랜잭션의 롤백 유무에 대해 정리하다가 프록시 객체가 언제 생성되는지, 어떤 원리로 만들어지는지 고찰을 하기 위해 여러 실험을 진행해보았다. 다른 블로그 글을 읽어도 이해가 잘안되고, 블로그마다 말이 좀 다른게 있어 쉽게 믿을 수가 없었다. 무엇보다 제일 궁금했던 점은 프록시가 나의 서비스클래스를 상속받아서 만들어지는지,..
-
[Spring] 예외 발생시 Spring DB 트랜잭션 롤백 안되는 경우Spring Framework 2024.11.27 18:44
배경지식Checked Exception 은 개발자가 인지한 예외라 약속한다.Unchecked Exception 은 개발자가 인지하지 못한 예외라 약속한다.try-catch 문에서 catch 된 Exception 은 개발자가 인지한 예외라 약속한다.스프링은 개발자가 인지한 예외에 대해서는 기본적으로 롤백을 진행하지 않는다.예외가 발생한 메서드의 Propagation 레벨이 Required(default) 가 아니면 부모트랜잭션은 롤백되지 않는다.프록시가 Self invocation 을 시도할 경우 경우에 따라 트랜잭션이 롤백되지 않을 수 있다. [Spring] 트랜잭션에 대한 실험과 고찰 (Self-invocation, 프록시가 메서드를 실행하기까지의 과정)[Spring] 예외 발생시 Spring DB 트..