분류 전체보기 134

[SpringFramework] Coupling, 강한 결합과 느슨한 결합

강한 결합과 느슨한 결합0. 결합(Coupling)이란? 무언가를 변경하는 데 얼마나 많은 작업이 관련되어 있는지에 대한 것입니다. 결합은 일상생활에서 찾아볼 수 있습니다.더보기자동차를 예시로 들어보겠습니다.자동차의 구성 요소들을 생각하면엔진, 타이어, 핸들, 전면 유리,  키, 내비게이션, 블랙박스, 엔진 오일, 워셔액 등이 있습니다.이 중에 엔진은 자동차에 (강하게) 결합되어 있습니다, 엔진을 교체하는 작업은 상당히 번거롭습니다.타이어는 어떤가요? 타이어를 교체하는 것이 번거로울 수 있지만, 엔진에 비해 상대적으로 수월합니다.워셔액은 또 어떻죠? 누구나 보충할 수 있습니다. 이는 느슨한 결합이라고 볼 수 있습니다. 데스크톱과 노트북을 예시로 들어보겠습니다.집에 설치된 노트북과 데스크톱을 사용하는 데 ..

Java 2023.11.26

[SpringFramework] 스프링프로젝트 생성(spring.io, InteliJ), 클래스 생성

스프링프로젝트 생성(spring.io, InteliJ), 클래스 생성0. 앞서스프링 프레임워크에 대해 학습하기 위해스프링 프로젝트를 생성합니다.1. 프로젝트 생성하기 - spring.io더보기start.spring.io에 접속하여스프링 프로젝트를 생성합니다설정은 다음과 같습니다. - Maven- 3.2.0 (3.x.x)- Java 17- Jar 설정을 완료했으면 GENERATE 버튼을 클릭하여다운로드합니다.2. 프로젝트 열기 - InteliJ더보기인텔리제이에서 프로젝트를 열 수 있습니다.   기존에 수정하고 있던 프로젝트가 없다면 사진 3처럼,   수정하고 있던 프로젝트가 있다면 사진 4처럼 진행하고,    사진 5에서 Trust Project를 클릭하여최종적으로 프로젝트를 열 수 있습니다.3. 클래스 ..

Java 2023.11.25

Redis(Remote Dictionary Server) 란?

1. Redis 란? Remote Dictionary Server를 나타내는 용어입니다. 빠른 오픈 소스 인 메모리 키 값 데이터 스토어 입니다. db, cache 등으로 사용되고 있습니다. 1 밀리초 미만의 응답시간을 제공하여 초당 수백만 건의 요청을 지원할 수 있습니다. 2. 이점 1. 성능 모든 Redis(Remote Dictionary Server) 데이터는 메모리에 상주하므로 데이터 액세스의 대기 시간을 낮추고 처리량을 높입니다. 기존 db와 달리, 인 메모리 데이터 스토어에는 디스크로의 이동이 필요하지 않기 때문에 엔진 대기 시간이 마이크로초 단위까지 줄어듭니다. 그 덕에 인 메모리 데이터 스토어는 더 많은 작업을 처리하고 더 빠른 응답 시간을 지원할 수 있습니다. 따라서 평균 읽기 및 쓰기 ..

DBMS 2023.11.14

SpringSecurity 스프링 시큐리티 웹 애플리케이션에서 시작하기 가이드(공식문서)

SpringSecurity 시작하기 가이드(~15분) SpringSecurity에 대해 심도있게 알아보기 전, 스프링 공식문서의 빠르게 시작할 수 있는 가이드를 통해 SpringSecurity에 대해 대략적으로 파악해보려고 합니다. 예제에선 Thymeleaf 를 사용했지만, Thymeleaf를 사용하지 않을 수도 있기 때문에 Spring 부분만 참조하려고 합니다! 또한, SpringBoot를 사용한다고 가정하여 view controller의 설정 또한 생략하려고 합니다. 생략한 부분에 대해 자세히 알고 싶으시다면, 참조 부분의 공식문서 페이지를 확인해주세요 준비사항 15분 이내의 시간 IDE Java 17 Gradle 7.5+ or Maven 3.5+ 시작 1. SpringSecurity 의존성 추가 G..

Java 2023.10.31

OAuth 2.0 개요

들어가기 앞서 OAuth 2.0은 인가(Authorization)를 위한 표준 프로토콜입니다. 웹 애플리케이션, 데스크톱 애플리케이션, 휴대폰 및 디바이스에 대한 특정한 인가(Authorization)흐름을 제공하여 클라이언트 개발을 단순하게 해줍니다. OAuth 2.0 Authorization 프레임워크를 통해 제3자가 리소스 소유자(HTTP 서비스 사용자)와 서비스 사이에서 상호작용을 하거나, (제3자가) 스스로 권한을 획득하는 방법 등을 통해 액세스 권한을 획득하고, HTTP 서비스에 대하여 액세스할 수 있습니다. 0. 개요 전통적인 클라이언트-서버 인증(Authentication) 모델에서 클라이언트는 서버에서 보호중인(인가된 사용자만 접근가능한) 자원에 액세스를 요청하기 위해 리소스 소유자의 자..

Dictionary 2023.10.15

JSON Web Tokens, JWT란?

1. JSON 웹 토큰이란? 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 방법을 정의하는 개방형 표준(RFC7519)입니다. 전송하는 정보는 디지털 서명이 되어 있어(발신자 확인 및 정보 위변조 방지) 신뢰할 수 있습니다. HMAC 알고리즘 또는 RSA 및 ECDSA 를 사용하는 비대칭 암호화 방식(공개/개인 키 쌍)을 사용하여 서명할 수 있습니다. 서명된 토큰을 사용하여 전송하는 정보를 숨기고, 비대칭 키를 통해 개인 키를 가지고 있는 사람만 인증합니다. 정보 전송을 위한 방법 중 하나로, 암호화를 통해 서명하여 신뢰도가 높습니다. 인증을 통해 토큰을 발급하고, 토큰에 권한을 부여하여 사용할 수 있습니다. 2. 사용 예시 액세스 승인과 정보 교환에 사용할 수 있습니다. 1. 액세스 승인 ..

Dictionary 2023.10.14

클라우드의 서비스 제공 형태 XaaS, SaaS, PaaS, IaaS

클라우드 서비스는 다양한 도구와 기술을 사용자에게 서비스 형태로 제공합니다. (애플리케이션, 플랫폼, 인프라, 보안, 운송 등 아주 다양합니다) 컴퓨팅 액세스와 원격 액세스를 통해 모든 것이 서비스로 제공될 수 있습니다. as a Service aaS 서비스형이라는 용어는 제3사에서 클라우드 컴퓨팅 서비스를 제공한다는 의미입니다. 따라서 사용자는 코드, 고객 관리와 같은 더 중요한 업무에 집중할 수 있습니다. 각 유형의 클라우드 컴퓨팅을 활용하면 관리해야할 온프레미스 인프라가 감소합니다. 기존에는 온프레미스환경에서 IT자산을 설치, 관리 및 유지보수하는 방식을 사용했습니다. 클라우드 컴퓨팅은 클라우드 서비스 제공자(제3사)가 IT자산을 소유, 관리 및 유지보수하고, 고객이 인터넷 연결을 통해 이를 소비하..

Dictionary 2023.09.26

CI/CD 란?

개발은 변경사항을 통합하고, 테스트, 릴리스하는 단계를 거칩니다.그 과정에서, 코드를 자주 커밋하여 통합하면피드백을 자주할 수 있으며 높은 성과로 이어질 수 있습니다.성과가 높은 팀은 성과가 낮은 팀보다 417배 더 많이 배포합니다.- DevOps 현황 보고서 (2022) 그러나 "커밋 - 배포 - 테스트"과정을 수작업으로 처리한다면보다 많은 시간과 자원이 소모될 수 있습니다. 이를 자동화하여짧은 주기로 배포할 수 있는 방법이 있습니다.CI/CD 입니다.CI1. CI(Continuous Integration, 지속적인 통합)이란?(CI/CD 파이프라인을 구현하기 위한 첫 번째 단계입니다)동일한 프로젝트에서 작업하는 모든 사람이 정기적으로 코드 베이스의 변경 사항을 중앙 저장소에 병합하도록 하는 방식입니다..

Dictionary 2023.09.23

프록시(Proxy)란?

일반적으로 클라이언트의 요청을 전달하고 응답을 보내는 서버를 게이트웨이라고 합니다. 프록시는 특정 유형의 게이트웨이입니다. 1. 프록시(Proxy)란? 컴퓨터 네트워크에서 클라이언트로부터 요청을 받아 다른 서버의 자원을 중계하는 서버입니다. 클라이언트가 서버로부터 필요한 자원(파일, 연결, 웹 페이지 등)을 원본 서버에 요청하면, 프록시 서버는 그 사이에서 대신 통신을 수행합니다. 프록시 서버에는 자원들이 캐시되어 임시 저장되어 있습니다. 따라서 과거에 클라이언트가 요청했던 자원을 재요청할 때, 원본 서버에 요청할 필요 없이 프록시 서버 내의 캐싱된 정보를 제공받을 수 있습니다. 이를 통해 데이터 전송시간과 외부 트래픽을 줄이고, 원본 서버의 네트워크 병목 현상을 방지할 수 있습니다. ※ 네트워크 병목 ..

Dictionary 2023.09.20

구성 관리

대규모 프로젝트일수록 시스템 관리자와 소프트웨어 개발자는 문서, 유지 관리 및 변경 제어 프로세스가 없을 때 (구성 관리가 없을 때) 서버에 무엇이 있으며, 어떤 소프트웨어가 업데이트되었는지 곧바로 알아차리기 힘듭니다. 만약 모든 변경 사항의 세부 정보를 기록하지 않는다고 가정한다면, 문제가 발생했을 때 원인을 찾고 해결하기 어려울 것입니다. 또한 동일한 환경을 구축하는 데에도 난항을 겪을 것입니다. 1. 구성 관리란? 소프트웨어 개발 및 CI/CD 컨텍스트에서 변경사항이 적용된 시기를 확인할 수 있도록 특정 인프라 설정의 세부 정보를 기록하는 것을 말합니다. 컴퓨터 시스템, 서버 및 소프트웨어를 원하는 상태로 일관되게 유지하는 프로세스입니다. 2. 필요성 구성 관리는 시스템에 다양한 변경사항이 적용되더..

Dictionary 2023.09.20
728x90
반응형