https://fierycoding.tistory.com/69
즉 세션, 토큰의 장단점은 각각 안정성과 확장성이 될 것 입니다.
세션은 서버에 저장되어 안전하나 하나의 서버에만 저장되어 있기 때문에 확장성이 좋지 않고,
토큰은 클라이언트에 저장되어 확장성이 좋으나 안정성은 떨어집니다.
(서비스들은 서버의 과부하를 줄이기 위해서 여러 서버를 두고 사용하는데, 내가 요청한 request마다 내가 접속하는 서버가 달라질 수 있다.
이때 세션을 사용하면 서버가 달라질 때마다 해당 서버에는 세션 정보가 없기 때문에 다시 로그인을 해줘야 합니다.
이를 해결할 수 있는 방법도 있지만 그 방법보다 토큰을 이용하는 것이 더 편리하기 때문에 웹 사이트에서는 토큰을 주로 이용한다.)
HTTP(HyperText Transfer Protocol)는 하이퍼 텍스트 전송 프로토콜으로, 웹 서버와 웹 브라우저 상호 간의 데이터 전송을 위한 프로토콜입니다.
HTTPS는 HTTP에 S가 하나 붙어있는데요.
이때 S는 SSL 인증서를 의미합니다.
즉 HTTPS는 SSL(Secure Socket Layer) 인증서를 사용하는 HTTP입니다.
SSL(또는 TLS) 인증서는 일반 HTTP 요청 및 응답을 암호화합니다.
따라서 HTTPS는 HTTP보다 더 안전한 보안용 프로토콜이라고 할 수 있습니다.
HTTP와 HTTPS의 유일한 차이점은 HTTPS를 사용한 웹 페이지를 통해 전송되는 모든 데이터는 추가적인 보안 계층이 있다는 것입니다.
(이를 TLS(전송 계층 보안) 프로토콜이라고 합니다.)
따라서 모든 유형의 데이터는 변경되거나 손상될 수 없는 HTTPS 사이트를 통해 전달되며 제3자로부터 보호됩니다.
출처 : https://www.redhat.com/ko/topics/devops/what-is-ci-cd
https://seosh817.tistory.com/104
CI/CD는 자동화를 통해서 애플리케이션을 더욱 짧은 주기로 사용자에서 제공하는 방법입니다.
CI는 Continuous Integration, 지속적인 통합을 말합니다.
간단하게 말하자면, build -> test -> merge까지의 작업을 자동화한 것이라고 할 수 있습니다.
애플리케이션의 코드가 변경됐을 때, 정기적으로 빌드 및 테스트를 거쳐서 리포지토리에 병합해줍니다.
여러 개발자들이 각자 작업을 진행하잖아요.
이때 작업해놓은 모든 분기 소스 코드들을 병합해줘야 하는데 분기가 여러 개다 보니까 반복적으로 병합해줘야 하는 번거로움이 존재합니다.
CI를 통해서 반복적인 병합 작업을 자동화하여 수월하게 진행할 수 있고, 자동화된 테스트로 인해 제대로 병합되었는지 확인할 수 있어 충돌로 인해 발생하는 문제를 빠르게 캐치하고 해결할 수 있습니다.
CD는 Continuous Delivery 또는 Deployment, 즉 지속적인 서비스 제공 또는 배포를 말합니다.
지속적인 제공이란, 변경된 사항들을 리포지토리에 자동으로 릴리즈하는 것을 말하고,
지속적인 배포란, 리포지토리에서 프로덕션 환경(사용자가 사용 가능한 환경)까지 자동으로 릴리스하는 것을 말합니다.
CI에서 코드 병합 후에, "지속적인 제공"을 통해서 리포지토리에 코드를 릴리즈할 수 있고 그 코드를 "지속적인 배포"를 통해서 프로덕션 환경에 자동으로 릴리즈합니다.
인증과 인가의 차이에 대해 설명해 주세요.
Spring Security의 인증 처리 흐름에 대해 설명해 주세요.
Spring Security의 인가 처리 흐름에 대해 설명해 주세요.