일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- spirng
- HikariCP
- 테스트코드
- 살아남았다.
- Transactio
- 트랜잭션
- Elk
- 우테코
- MDC
- tomcat
- Gateway
- 커넥션 풀
- redis
- 동시성문제
- JWT
- DispatcherServlet
- oauth
- 우아한테크코스
- Kotlin
- circuitbreaker
- Thread
- 톰캣
- 최종 합격
- AOP
- 우아한 테크 코스
- 우테코 5기
- resilience4j
- Spring cloud gateway
- Spring Batch
- 오어스
- Today
- Total
목록우아한 테크 코스(우테코)/우테코 공부 (25)
코딩은 내일부터
동글 프로젝트 특성상 블로그에 글을 발행하고, 글의 정보를 얻어오고,... 등등 이러한 정보를 얻기 위해서는 외부 API를 통해 데이터를 얻어오는데 요청하는 값과 응답하는 값이 비슷해서 공통 메서드를 분리해서 추상화시키면 좋을 거 같아서 팀원에게 의견을 말한 결과 추상화를 시키자고 결론을 내렸다. 이번 포스팅은 내가 어떻게 외부 API를 추상화를 진행했는지 글을 써보려고 한다. 원래 구조 먼저 원래 코드는 API를 처리하는 부분이 앞단에 있고 인증 인가를 담당하는 부분이 뒤에 있었다. 외부 API를 담당하는 부분을 우리 중요 비즈니스가 아닌 외부 시스템으로 보고 인프라스트럭처라고 생각해서 위에 사진에 있는 현재 구조가 아닌 기대하고 있는 구조를 생각하면서 리팩터링을 시작했다. 공통 메서드 추출 추상화를 ..
Thread를 이해하기 위해서는 Process를 이해해야하는데 Process Process는 실행된 프로그램을 가리키는 말이고, 프로세스는 OS에서 실행될때 필요한 자원을 할당 받게된다.(데이터 or 메모리 or CPU) 프로세스가 할당받은 자원은 다른프로세스와 공유가 안된다.(!!!) Thread Thread는 Process가 실행되면 관련 로직(연산, 화면처리 등등..)을 수행할때 작업을 수행해주는 일꾼이라고 생각하면 편할거같다. 여기서 중요한 점은 Process는 자원을 공유하지않는다고 위에서 얘기했지만, Thread는 자원을 공유한다(!!!!!!!!) Thread가 여러개일때 문제점 그래서 다중 스레드 환경에서 두 개 이상의 스레드가 변경 가능한(mutable) 공유 데이터를 동시에 업데이트하면 ..
이번글은 톰캣을 구현하면서 공부한 HTTP, 톰캣 그리고 헷갈렸던 포인트인 서블릿부분을 포스팅했다. 웹 서버 웹 서버는 http요청을 처리하고 응답을 제공한다. 웹 서버는 HTTP프로토콜을 구현하고, 웹 리소스를 관리하고, 웹 서버 관리 기능을 제공하는데 기본 웹 서버의 요청은 다음 사진과같이 이루어진다. 우리가 http://localhost:8080/beaver.index페이지를 열어볼 때, 웹브라우저는 HTTP요청을 http://localhost:8080서버로 보낸다. 서버는 요청받은 객체를 찾고, 성공했다면 그것을 타입, 길이 등의 정보와 함께 http응답에 실어서 클라이언트에게 보낸다. HTTP가 뭔데? HTTP는 Hyper Text Transfer Protocol의 두문자어로, 인터넷에서 데이터..
개발을 하면서 도커라는 단어를 많이 접할거다. 도커 왜씀? 먼저 개발을 하면서 특정 프로그램을 다운받는 과정을 생각해보자 보통을 위와같은 흐름으로 프로그램을 설치할 것 이다. But!!! 원하는 흐름대로 프로그램 설치가 안될것이다. 왜냐면 일반적으로 첫번째 사진처럼 흘러가지만, 갖고있는 서버, 버전,운영체제 등등 여러환경에서 에러가 발생한다. 그리고 설치과정이 (비교적)복잡하다(?) 이러한 과정을 도커한테 실행시켜줘라고 말하면 도커는 바로 실행 시켜준다!! 이렇게 도커의 장점 중 하나를 알아봤다. 다음으로는 도커가 무엇인지 알아보겠다. 도커가 뭔데? 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구 이며 컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계이다. 라고 ..
트랜잭션이란? 트랜잭션은 꼭 여러개의 변경작업을 수행하는 쿼리가 조합됐을때 의미 있는 개념이 아니다. 작업이 모두 적용되거나 아무것도 적용되지 않아야함을 보장해주는것을 의미한다. 다시 말해 논리적 작업 단위를 트랜잭션이라고 부른다. ACID? 그게 뭔데. ACID는 트랜잭션의 4가지 특성의 약자들을 모아놓은거다. Atomicity(원자성) 원자성이란 하나의 트랜잭션이 모두 성공하거나, 모두 실패해야하는 성질이다. 말 그대로 작업을 수행하는 도중 하나의 쿼리가 잘못됐을때 그 전에 수행한 쿼리는 모두 반영되지 않고 초기 상태로 돌린다는 뜻이다. Consistency(일관성) 일관성은 하나의 트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야한다는 것이다. 예를 들어 비버 서비스의 회원가입할때 ..
OAuth가 뭐야? Oauth를 검색해보면 위키백과에는 이렇게 정의하고있는데… 이렇게 보면 잘모르겠다.. 예를 들어서 설명하면 비버라는 서비스를 이용하고있는데 서비스중에 카카오톡에 내 프로필사진을 가져오는 가능이있다고가정을 하겠다. 사용자는 비버한테 카카오톡 아이디와 패스워드를 입력하면 카카오톡의 프로필사진을 가져오는 흐름이다. 이때! 사용자 입장에서는 비버를 믿을 수 없고(카카오톡에 다른 정보를 빼오면 어떡하지?) 비버 입장에서도 이러한 정보를 가지고있는것이 부담이 될 수 있다. (만약에 비버서비스를 해킹 당해서 사용자의 정보가 노출이 될 수 있으니까!!) 그리고 카카오톡 입장에서도 높은 보안으로 서비스를 만들어놨는데 이러한 정보가 노출되는게 싫을거같다. 그래서 도입할 수 있는게 OAuth이다. 쉽게말..
이번 프로젝트에서 JWT쪽을 맡게 됐다. 이번 포스팅에서는 JWT과 JWT을 적용하는 과정을 설명할 예정이다. JWT을 적용한 이유 이번 프로젝트에서 JWT를 적용한 이유는 JWT는 토큰 자체에 필요한 정보를 포함하고 있어 서버 측에서 별도의 상태를 유지하지 않아도 된다. (이로써 서버는 요청마다 토큰을 검증하고 사용자 신원을 확인할 수 있어 세션 관리나 DB의 부담을 줄일 수 다.(accessToken의 정보 만으로 사용자 인증을 할 수 있어서) JWT는 토큰은 매 요청마다 사용자 데이터베이스 등과의 통신 없이 빠르게 인증을 수행할 수 있다. 따라서 서버 부하를 줄여준다.(access가 만료되고 refachToken의 정보를 확인 할 때 DB에 접근하니까!) 이러한 이유로 JWT를 적용하기로 결정했다...
이번에 프로젝트를 시작하면서 어떤 자바 버전을 사용해야하는지 고민하고 제가 버전을 선택한 이유을 소개하려고 합니다! 선택 이유 1. LTS(Long Term Support) Java에는 다양한 버전이 존재한다. 그중 가장 많이 쓰이는 버전은 Java 8, 11, 17이다. 이 세 가지 버전이 많이 사용되는 많이 이유들이 있겠지만, 이 버전들이 LTS(Long Term Support) 버전이기 때문이다. LTS란 말 그대로 장기간에 걸쳐 지원을 해주겠다는 뜻이다.(버그 수정, 업데이트 등등..) 위에 표를 보면 java 8은 30년 12월 11은 26년 9월 17은 29년 9월입니다. 따라서, LTS 버전인 Java 8, 11, 17이 가장 많이 사용되고 있다. 이 표로 봤을때 8버전을 많이 사용하는 이유..