본문 바로가기

항해99/스터디

(9)
[스터디] 클린 코드 클린 코드- 클린 코드는 유지보수가 쉽고, 다른 개발자가 이해하기 쉬우며, 오류가 발생할 가능성이 낮은 코드를 의미한다.- 클린 코드는 프로젝트의 생산성을 높이고, 장기적으로 개발 비용을 줄이며, 소프트웨어의 품질을 향상시켜줄 수 있다.- 클린 코드를 작성하는 것은 단순히 '좋은 습관'이 아니라, 프로페셔널 개발자로서의 필수 덕목.- 클린 코드를 작성하기 위해서는 명확한 코딩 규칙과 지침을 따르는 것이 중요하다. -> 코드의 일관성을 유지하고, 소프트웨어의 가독성과 유지보수성을 향상시키는 데 도움을 준다. 따라서, 개발자는 클린 코드를 작성하기 위한 다양한 원칙과 기법을 학습하고, 이를 실제 코딩 과정에 적용하는 것이 중요하다.이는 개인의 역량 향상뿐만 아니라 팀 전체의 생산성 강화에도 기여한다.결론적으..
[스터디] JMeter를 활용해서 부하 테스트 해보기 Apache JMeterApache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구이다.JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다.비슷한 부하테스트 도구로는 Apache Benchmark, Ngrinder, Pinpoint, Gatling등이 있다.<p data-ke-size="size16..
[스터디] Refresh Token을 Redis에 저장하는 이유와 적용 방법 Redis? Redis는 디스크가 아닌 메모리에 데이터를 저장하는 In-Memory 방식의 데이터베이스다. Key-Value의 형태의 데이터베이스이기 때문에 적은 메모리로도 데이터를 저장할 수 있으며, 작성 속도가 빠르다 Key-Value 형태를 가지고 있기 때문에 키를 알고 있다면 조회 성능이 O(1)까지 나온다는 장점을 가진다 인메모리 DB 방식으로 빠르게 접근이 가능하다 휘발성인 In-Memory DB는 영구적으로 저장될 필요가 없는 Refresh token을 관리하기에 효율이 좋다. 캐시처럼 데이터 만료일을 정할 수 있다. In-Memory In-Memory 데이터베이스는 MySQL과 같은 다른 일반 DB들처럼 SSD, HDD와 같은 보조기억장치가 아닌, 프로세서가 직접 액세스할 수 있는 컴퓨터..
[스터디] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - Nginx 무중단 배포 무중단 배포? CI / CD만 적용한다면 배포단계에서 애플리케이션이 종료된다는 문제가 있다. 실제 서비스에서 사용자가 서비스를 이용하던 중 갑작스럽게 서비스가 중단된다면 사용자 경험 측면에서 부정적일 것이다. 이 부분의 개선을 위해 무중단 배포를 진행하며, 무중단 배포는 말 그대로 서버를 중단 없이 배포하는 것이다. Nginx를 선택하는 이유? 무중단 배포를 구현하는 방식은 AWS의 ELB, 쿠버네티스, Nginx 등 여러가지가 존재한다. AWS의 서비스를 이용해 무중단 배포를 하는 건 프리티어 계정을 사용하는 대다수의 개발자들에서 부담스러울 수도 있을 것 같다. 과금이 발생해서 여러 리소스를 삭제해야하는데, 그 과정도 번거롭고 삭제해야하는 항목들이 많아 놓치는 부분이 발생한다면 나도 모르게 추가 과금이..
[스터디] 네이버, 카카오 소셜 로그인과 RefreshToken 카카오 로그인 과정 1. 카카오 로그인 1. 사용자가 서비스에서 카카오 로그인 버튼을 클릭합니다. 서비스는 카카오 인증 서버로 인가 코드 발급을 요청합니다. 2. 카카오 인증 서버는 사용자에게 인증을 요청합니다. - 카카오톡으로 로그인: 카카오톡 실행, 카카오톡에 연결된 카카오계정의 자격정보(Credentials)로 사용자 인증 - 카카오계정으로 로그인: 계정 정보를 입력해 로그인하는 화면 출력, 해당 카카오계정의 자격정보로 사용자 인증 3. 카카오 인증 서버는 사용자 인증 성공 시, 서비스 앱의 동의항목 설정을 바탕으로 사용자에게 동의 화면을 출력합니다. 4. 사용자가 필수 동의항목에 동의하고 로그인을 요청하면, 카카오 인증 서버는 인가 코드(Authorization Code)를 발급해 서비스 앱에 등..
[스터디] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - Spring Security, JWT Spring Security는 강력한 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크 인증: 데이터베이스, LDAP, OAuth 등과 같은 다양한 소스에 대해 사용자를 인증하기 위한 강력한 메커니즘을 제공함. 폼 기반 인증, HTTP Basic, HTTP Digest, OAuth 등 다양한 인증 방식도 제공 권한 부여: 개발자가 사용자 역할, 권한이나 표현을 기반으로 액세스 규칙을 정의할 수 있도록 해서 세분화된 액세스 제어를 가능하게 해줌. 보안 필터: Servlet API와 통합되어 들어오는 요청을 가로채고 보안 검사를 적용함. 필터 체인을 사용하여 인증, 권한 부여, 세션 관리, CSRF 보호 등과 같은 작업을 수행 세션 관리: 세션 고정 보호, 동시 세션 제어, 세션 시간 초과 처리 및 세션..
[스터디] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 머스테치로 화면 구성하기 머스테치와 Thymeleaf 차이점 1. 구문 Thymeleaf: HTML과 완벽하게 통합되는 정교한 구문을 가지고 있음 -> th:text, th:if, th:each 등과 같이 th: 접두사가 붙은 속성을 사용하여 변수 대체, 반복 및 조건부 렌더링과 같은 작업을 수행함 Mustache: 간단하고 직관적인 구문을 사용. 논리가 없고 변수 대체를 위해 {{ }}, 조건부 렌더링을 위해 {{# }} 및 {{^ }}와 같은 태그를 사용함. 2. 특징 Thymeleaf: 조건문, 반복, 국제화, 조각 포함, 양식 바인딩 등을 포함한 광범위한 기능을 제공함 (Mustache에 비해 기능이 더 풍부) Mustache: 의도적으로 단순하게 유지되었고, 고급 기능들을 지원하지 않음. 주로 논리 없이 데이터를 렌더링..
[스터디] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 스프링 부트 / JPA - 영속성 컨택스트 1. 트랜잭션 지속성 컨택스트 : 트랜잭션 범위 지속성 컨택스트는 엔티티 관리자가 생성될 때 생성되고 트랜잭션이 완료될 때까지 활성 상태를 유지 2. 확장 지속성 컨택스트 : 단일 트랜잭션 이상으로 확장되며 여러 트랜잭션에 걸쳐 있는 장기 실행 대화 또는 비즈니스 프로세스에 사용됨 3.애플리케이션 관리 지속성 컨택스트 : 애플리케이션 관리 지속성 컨택스트를 사용하면 애플리케이션이 지속성 컨택스트의 수명 주기를 명시적으로 제어할 수 있음 4. 컨테이너 관리 지속성 컨택스트 : 컨테이너 관리 지속성 컨택스트는 java EE 컨테이너에 의해 관리되며, 일반적으로 Java EE 환경에서 사용됨