전체 글

들어가며 캐시에 저장을 했지만 자주 히트율이 떨어지는 데이터의 경우 캐시에서 데이터를 찾는 작업, 디비에서 데이터를 조회하는 작업이 이중으로 일어나며 메모리 자원을 차지하기 때문에 캐시는 상황에 맞게 설정을 해야합니다. 제가 개발한 서비스의 메인 페이지에 위치하여 자주 조회되고, 수정이 거의 일어나지 않아 히트율이 높은 해시태그 데이터와 네일샵 데이터를 캐시에 저장하여 활용하기로 결정했습니다. Global Cache vs Local Cache 캐싱처리를 하면서 크게 local cache ,global cache 2가지가 있다는 것을 알게 되었습니다. local cache 의 경우 로컬 캐시는 애플리케이션 내부에서만 유효하며, 동일한 애플리케이션 내의 여러 모듈이나 서비스 간에는 공유되지 않습니다. 또한,..
𝙌. IP주소에 대해서 설명해주세요. IP는 인터넷에 연결되어 있는 모든 장치들 ( 컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유주소이다. IP주소는 IPv4, IPv6 가지 종류가 있다. 일반적 IP주소라고 하면 IPv4 주소를 말한다. 𝙌. IPV4와 IPV6는 어떤 차이점이 있을까요? IPv4 주소는 32비트 이진수로 구성된다. 일반적으로 다음과 같이 8비트 단위로 끊어서 4부분으로 10진수와 . 으로 표기한다. IPv6 주소는 128비트 이진수로 구성된다. 다음과 같이 16비트 단위로 끊어서 8부분으로 16진수와 : 으로 표기한다. 𝙌. 서브넷과 서브넷 마스크에 대해 설명해주세요. 서브넷은 네트워크의 부분망이다. 그림에서 파란색으로 표시된 3개의 서브넷을 볼..
UDP 𝙌. UDP에 대해 설명해주세요. UDP는 비연결형 프로토콜로 3-way handshake 등의 세션 수립 과정이 없습니다. 또한 비신뢰성 프로토콜로 흐름제어, 오류제어, 혼잡 제어를 제공하지 않습니다. 이러한 단순성 덕분에 적은 양의 오버헤드를 갖고 수신여부를 확인하지 않아서 속도가 빠릅니다 실시간성이 중요한 통신(동영상 스트리밍 등)에 주로 사용됩니다. 𝙌. UDP의 장단점을 설명해 주세요. 비연결형 서비스이므로 TCP에 비해 속도가 빠르며 네트워크 부하가 적습니다. 1:1, 1:N, N:N 통신이 가능합니다. 데이터의 신뢰성이 없습니다. 𝙌. UDP 체크섬에 대해 설명해주세요. UCP 체크섬은 UDP 패킷의 무결성을 검사하기 위한 방법입니다. UDP는 비연결형 프로토콜이기때문에 데이터그램이 ..
· DevOps
들어가며 프로젝트를 릴리즈 하기 전 모니터링 기능을 추가하고 싶었습니다. 결론적으로, CloudWatch로 Metrics를 수집하고 Grafana로 Dashboard를 구성하기로 결정하였습니다. 또한 CloudWatch에서 Metrics에 대한 Alarms를 보내는 환경을 구축하기로 하였습니다. Metric 수집? CloudWatch vs Prometheus CloudWatch는 AWS 환경에 적합하며, Prometheus는 클라우드 종속성이 적어서 다양한 환경에 적용 가능합니다. 하지만 Prometheus는 AWS 서비스와의 통합이 CloudWatch에 비해 직접적이지 않아, AWS 리소스에 대한 메토릭을 모니터링하기 위해서는 추가구성이 필요합니다. → AWS 서비스(EC2, RDS 등)만 사용하기 때..
쿠키/세션/토큰 𝙌. 쿠기와 세션에 대해서 설명해 주세요. 쿠키는 HTTP 서버가 클라이언트를 식별할 수 있도록 하기 위해서 사용되는 것입니다. 클라이언트가 웹 서버에 처음 접속하면, 서버는 쿠키를 생성에서 클라이언트에게 줍니다. 이후 클라이언트는 서버에 요청을 보낼 때 자신의 정보가 들어있는 쿠키를 같이 보냅니다. 그러면 서버는 쿠키를 통해 클라이언트를 식별할 수 있습니다. 쿠키는 클라이언트 단에 저장되기 때문에 쿠키에 들어있는 사용자 정보가 유출될 수 있는 단점이 있습니다. 세션은 브라우저가 종료되거나, 서버에서 해당 세션을 삭제할 수 있기 때문에 쿠기보다 보안성이 좋습니다. 서버에서 데이터를 저장하므로 서버의 부하가 커진다는 단점이 될 수 있습니다. 쿠키와 세션을 사용하는 이유는 HTTP의 conn..
테스트의 필요성 1. Regression 잘 돌아가던 코드가 이번 배포로 인해서 동작하지 않는 상황을 Regression이라 부릅니다. 이런 것을 한 두 번 경험하다 보면, 전체적으로 수정과 배포가 무서워지게 됩니다. 2. 좋은 아키텍처를 유도 SOLID S( 단일 책임 원칙 ) : 테스트는 명료하고 간단하게 작성해야 하기 때문에, 단일 책임 원칙을 지키게 됨. 테스트가 너무 많아져서 이게 무슨 목적의 클래스인지 눈에 안 들어오는 지점이 생김. 이때가 클래스를 분할해야 하는 시섬, 그러면서 책임이 자연스럽게 분배됨. O ( 개방 폐쇄 원칙 ) : 테스트 컴포넌트와 프로덕션 컴포넌트를 나눠 작업하게 되고 필요에 따라 이 컴포넌트를 자유자재로 탈부착이 가능하게 개발하게 됨 L ( 리스코프 치환 원칙 ) : ..
들어가며 지금까지 프로젝트에선 레이어드 아키텍처를 사용하여 유사한 기능들을 같은 계층으로 묶어 Controller, Service, Repository를 추상화 없이 바로바로 사용하였습니다. JpaRepository 가 인터페이스로 만들어지긴 했지만 사실상 JPA에 직접 의존하고 있기 때문에 JPA와 강결합이 되어있습니다. 따라서 이번 프로젝트에서는 의존성 역전을 해주었습니다. 시스템 외부 연동 ( DB, WebClient 등)은 가능하면 모두 추상화하여 구현해 주었습니다. 일단 Repository interface를 새로 만들어서 분리해 주었습니다. 이것은 JPA와 관계없는 인터페이스입니다. 그리고 Persistence Layer에 해당 인터페이스의 구현체를 둡니다. 그 구현체는 Jpa Reposito..
이 포스팅에서는 spring security 및 jwt, Spring Data JPA 관련 내용은 다루고 있지 않습니다. RestTemplate vs FeignClient? 구글 서버, 카카오 서버와 HTTP 통신을 하기 위해선 라이브러리가 필요합니다. 처음에는 restTemplate을 사용하여 구글로그인을 구현했습니다. 하지만 카카오 로그인을 구현하는 와중에 FeignClient라는 것을 알게 되어 둘 중 무엇으로 통일할지 고민하며 특징을 비교해 보았습니다. RestTemplate REST API를 호출할 수 있는 Spring 내장 클래스입니다. Spring3.0부터 지원되었고, json, xml 응답을 모두 받을 수 있습니다. REST API 서비스를 요청 후 응답으로 받을 수 있도록 설계되어 있으며..
HTTP ( HyperText Transfer Protocol) 𝙌. HTTP 프로토콜에 대해서 설명해 주세요. ⭐️ HTTP는 웹 상에서 정보를 주고받게 해주는 프로토콜입니다. HTTP는 클라이언트와 서버로 구현됩니다. 클라이언트가 HTTP 메서드로 서버에게 요청을 보내면, 서버는 HTTP 상태코드로 응답하는 방식으로 동작합니다. 𝙌. HTTP의 요청/응답 모델에 대해 설명해 주세요. 클라이언트가 서버에게 요청하고 응답받는 모델입니다. 클라이언트는 HTTP 메서드, 헤더, 바디와 함께 서버에게 HTTP 요청을 보냅니다. 서버는 클라이언트가 보낸 HTTP 메서드 헤더, 바디에 따른 처리를 수행한 다음 상태코드를 통해 HTTP 응답을 클라이언트에게 보냅니다. 클라이언트는 서버로부터 받는 응답을 처리합니다...
𝙌. 컴퓨터 네트워크는 무엇인가요 컴퓨터 네트워크는컴퓨터 간에 서로 연결되어 데이터를 주고받을 수 있는 통신망입니다. 현대에는 월드 와이드 웹(www)이라는 네트워크 통신망에서 주로 HTTP를 사용해 데이터를 주고받습니다. 𝙌. 컴퓨터 네트워크에서 데이터를 전송하는 방식에 대해 설명해 주세요. 컴퓨터 네트워크에서 데이터를 전송하는 방식은 회선 교환 방식과 패킷 교환 방식이 있습니다. 회선 교환 방식은 일대일 네트워크 연결 회선을 미리 점유해서 데이터를 전송하는 방식입니다. 회선을 점유하는 동안은 다른 컴퓨터가 데이트를 전송할 수 없습니다. 패킷 교환 방식은 데이터를 패킷이라는 작은 단위로 나눠서 전송하는 방식입니다. 회선을 점유하지 않기 때문에 여러 컴퓨터들이 데이터를 전송할 때 회선을 효율적으로 사용할..
dltjdn
devDiary