본문 바로가기

전체 글171

Redis는 언제 어떻게 사용할까 Redis No-SQL 데이터의 한 종류 캐시란 데이터의 원래 소스보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소 레디스는 캐시로 사용하기 좋은 Solution 단순한 key-value 구조 In-memory 데이터 저장소(RAM) 빠른 성능 평균 작업속도 < 1ms 초당 수백만 건의 작업 가능 레디스를 캐시로 사용할 때 배치에 따라 시스템의 성능에 영향을 끼침 이를 캐싱 전략(Caching Strategies) 라고 한다. 읽기 전략 레디스를 캐시로 줄 때 가장 일반적인 Look-Aside(Lazy Loading) 어플리케이션은 데이터를 찾을때 캐시에 먼저 확인 - 캐시에 데이터가 있으면 캐시에서 정보를 가져옴 레디스에 찾는 키가 없다면 db에 접근해서 가져와 레디스에 저장을 한다. 레.. 2023. 1. 19.
230114 TIL TIL을 작성하는 것을 습관화 해야겠다. 매번 들어오는 지식의 양은 많은데 이것들으 내것으로 만들지 못한채 하루가 지나고 시간들이 지나면 금새 이 많은 지식들이 휘발된다. 이것들을 처음부터 다 내것으로 만들며 지금까지 왔다면 어마어마한 성장을 했을 것이라고 확신할 수 있다. 매번 들어오는 지식들을 내것으로 만들지 못하고 당장 있을 프로젝트만 코드를 긁어오고 구글링해서 단순히 해결하고 당장의 상황만 벗어나려고 애쓰다보니 내것이 된 정보들은 많이 없다고 느껴진다. 이번 실전 프로젝트도 그렇다. 2주간 꽤나 많은 지식들을 나는 받아들였지만 정작 내것이 된 부분은 적다. 어떻게 해야 내것으로 만들수 있을까? 라는 생각에 나는 남들보다 시간을 더 써서라도 아침은 개인 스터디, 저녁은 했던 내용들을 정리하고 하루를.. 2023. 1. 14.
CI/CD와 무중단 배포 CI(Continuous Intergration) 지속적 통합이라는 뜻으로 개발을 진행하면서도 품질을 관리할 수 있도록 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통하하면서 관리할 수 있음을 의미한다. 마틴 파울러가 제시하는 CI의 4가지 규칙 모든 소스코드가 살아있고 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드할 수 있게 할 것 테스팅을 자동화해서 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것 누구든 현재 실행 파일을 얻으면 지금까지 가장 완전한 실행 파일을 얻었다는 확신을 할게 할 것 CD(Continuous Deployment) 지속적 배포라는 뜻으로 빌드의 결과물을 프로덕션으로 릴리스하.. 2023. 1. 13.
Servlet vs Spring Servlet 웹 애플리케이션을 만들 때 필요한 인터페이스 Servlet은 왜 생겼을까 ? 정적 데이터만 전달하는 Web Server 사용자(요청)에 따라 다른 처리를 해줄 수 없다. 동적인 처리를 해주는 웹 애플리케이션이 없다. 동적 데이터를 처리하는 CGI(Common Gateway Interface) CGI 는 Web Server와 CGI 구현체 간의 규약 누가 작성을 했는지, 리뷰 요청도 보낼 수 있고, 친구도 확인할 수 있고 등 동적 데이터를 처리로 바뀌게 된다. CGI의 문제점은 많은 사용자를 처리하기에는 무리였다. 이러한 기존 CGI에서 개선을 해나갔다. 개선점 1. Process에서 Thread로 변경 개선점 2. 여러 Instance에서 Sigletone 패턴으로 변경 WebContain.. 2023. 1. 12.
웹 소켓 (Web Socket) 웹 소켓 (Web Socket) 두 프로그램 간의 메세지를 교환하기 위한 통신 방법 중 하나. 웹 소켓의 특징 양방향 통신(Full-Duplex) 데이터 송수신을 동시에 처리할 수 있는 통신 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있음 통상적인 http 통신은 client가 요청을 보내는 경우에만 Server가 응답하는 단방향 통신 실시간 네트워킹(Real Time-Networking) 웹 환경에서 연속된 데이터를 빠르게 노출 채팅, 주식, 비디오 데이터 여러 단말기에 빠르게 데이터를 교환 웹 소켓 이전에 비슷한 기술 1. Polling 서버로 일정 주기 요청 송신 2. Real-time 통신에서는 언제 통신이 발생할지 예측이 불가능 불필요한 request와 connection을 생.. 2023. 1. 11.
STARTTLS, SSL및 TLS 차이점 STARTTLS는 두 컴퓨터 간의 통신 채널을 암호화하는 방법을 제공하는 SSL/TLS(Secure Socket Layer / Transport Layer Security)를 화용하여 비보안 연결을 보안 연결로 변환 SSL과 TLS는 특정 버전의 프로토콜을 명명하는 데 사용되지 않는 한 일반적으로 상호 교환 가능한 용어 명명 문제 많은 문제를 일으키고 상황을 복잡하게 만드는 문제는 STARTTLS 대신 TLS라는 용어를 오용하는 일종의 이메일 소프트웨어입니다. 이전 버전의 Thunderbird는 "TLS"를 "STARTTLS를 사용하여 연결을 업그레이드하고 STARTTLS가 지원되면 실패합니다."로 사용했습니다. 뿐만 아니라 "가용성에 따라 TLS"를 "서버가 지원을 알리는 경우 STARTTLS를 사용하.. 2023. 1. 11.
587포트와 465포트의 차이점 PORT 465 465번 포트는 위의 RFC 821 규약을 보장하는 IETF(Internet Engineering Task Force) 라는 기관 말고, IANA(Internet Assigned Numbers Authority)라는 기관에서 제안한 포트이다. IANA는 인터넷 인프라의 많은 핵심을 다루는 기관인데, SMTP에 SSL(Secure Sockets Layer) 를 사용해 보안을 강화할 목적이었다. 그러나 이 465 포트는 1년쯤 지난 후 다른 녀석에게 밀려나게 된다. IETF에서 587 포트를 추가하였기 때문이다. PORT 587 IETF에서 RFC 2487에 명시한 587 포트는 TLS(Transport Layer Security)를 지원하는 SMTP 포트이다. 여기서 나온 "STARTTLS.. 2023. 1. 11.
AOP와 Spring AOP AOP (Aspect Oriented Programming) 관점 지향 프로그래밍 (AOP, Aspect oriented Programming) 관점 지향 프로그래밍 (AOP, Aspect oriented Programming) 관점 지향 프로그래밍 언어로 객체 지향 프로그래밍 뒤를 이은 하나의 프로그래밍 언어 고주 문제를 해결하기 위한 핵심 관심 사항과 전체에 적 jkadv.tistory.com 횡단 관심사(Cross-Cutting Concern)의 분리를 허용함으로써, 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임 애러 객체에 공통으로 적용할 수 있는 기능을 분리해서 개발자는 반복 작업을 줄이고 핵심 기능 개발에만 집중할 수 있음. 기존 크드의 수정이 필요, 코드 중복 발생 프록시 패턴 2. 타.. 2023. 1. 11.
Spring과 Spring Boot의 차이 Spring은 개발자들에게 봄이 찾아왔다....? 과연 봄.....? 그러한 의미적으로 만든 것이 Spring이다. Spring Boot makes it easy 쉽게만든다 to create stand-alone, 단독적인 production-grade 스프링 기반 애플리케이션 Spring based Applications that you can "just run" Dependency Spring 모든 Dependency를 버전까지 정확하게 한땀 한땀 매우 길고 정확하게 넣어줘야한다. Spring Boot 버전관리도 권장 버전으로 자동 설정 starter 2023. 1. 11.