본문 바로가기
반응형

분류 전체보기714

TIL_211110 1. Facts(사실, 객관) - code complete2 스터디 2. Feelings(느낌, 주관) code complete 2주차를 하며 여러가지 구현설계를 알아보았습니다. 내용이 워낙 방대하고 시간은 제한되다보니 모든 것을 다룰 수는 없었지만, 계층화가 얼마나 중요한지 깨닫는 시간이었습니다. 관용적으로 -Manager, -Impl 등의 접미사를 붙이는 것이 필요한가 논의했습니다. 문제상황이나 요구사항이 주어졌을 때, 어떻게 생각하고 고민하고 실행하는지, 대안은 어떤 것이 있는지 함께 고민하고 알아가는 재미가 있었습니다. 또한 어떤 개념을 공부한다는 것은 다른 사람이 이해하기 쉽도록 가르쳐야 한다는 것과 같습니다. 3. Findings (배운 점) 계층화를 하면서 코드를 짜야한다. 그래야 테스트 하.. 2021. 11. 11.
TIL_211109 1. Facts(사실, 객관) - 프로젝트 csrf 설정 2. Feelings(느낌, 주관) 물론, 이제 웹은 front-end와 back-end가 각각 api를 가지고 통신하는 것이 대세지만, 아쉽게도 현재 유지보수하는 프로젝트는 spring - jsp 입니다. 따라서 적용되는 spring security 방식에도 조금 차이가 있습니다. 이와중에 csrf토큰 설정에 관심을 가졌습니다. 궁금했던 것은, 기존에 왜 common 쪽의 post 요청은 csrf토큰을 전달하지 않을까? 로 시작해서 csrf 토큰 설정을 계획했습니다. 이렇게, 하나씩 프로젝트의 기존 설정들이나 코드들을 분석하고 좋은 방식으로 개선할 수 없는지 둘러보는 재미가 있습니다. 개발 트렌드와는 조금 거리가 멀 수 있지만, jsp에서 csr.. 2021. 11. 10.
TIL_211108 1. Facts(사실, 객관) - 프로젝트 Interceptor 확인하기 2. Feelings(느낌, 주관) Interceptor는 보통 권한체크를 위해서 사용한다고 알고 있었습니다. 또한 aop, filter와 같이 비교되면서 면접 단골 질문이기도 했고 실제로 미세한 차이점들로 사용방식들이 다릅니다. spring security를 공부하면서 확실히 filter에 대해 배웠는데, filter는 spring과 무관하게 servlet단에서 작동하는데 spring security를 적용해보면서 아주 뼈저리게 filter를 만져보았습니다. aop도 최근에 프로젝트와 강의를 보면서, 관점지향 프로그래밍이라는 주제로 컨트롤러나 메서드에 공통되는 관심사들에 특정 동작들과 제약들을 걸어줄 때 사용합니다. 로그기록이나 .. 2021. 11. 9.
메세지 큐 *메세지 큐(Message Queue) 메시지 큐는 시스템이 처리할 일을 차례대로 넣어놓고 시스템이 하나씩 작업을 가져가 처리하도 다음 작업을 또 가져올 수 있는 Store-and-Forward 방식의 시스템이다. 이런 의미에서 보면 job scheduler와 유사한 역할을 한다. *pub/sub 구조 Pub/Sub 모델은 비동기 메시징 방식이다. 이메일 발신에서 사용하는 To:, CC:처럼 특정 수신자를 정하는 것이 아니라, Publlish 하는 Topic(토픽)을 Subscriber(구독자) 신청한 모든 수신자에게 메시지를 보내는 방식이다. 수신자는 송신자의 IP 주소나, 특별한 정보를 알 필요가 없이 원하는 주제만 사전에 구독 신청을 하면 된다. 따라 송수신자는 loosely coupled로 엮여있.. 2021. 11. 7.
샤딩 샤딩(sharding)이란 하나의 거대한 데이터베이스나 네트워크 시스템을 여러 개의 작은 조각으로 나누어 분산 저장하여 관리하는 것을 말한다. imageKey를 가지고 여러대의 5대 서버에서 연산 후에, 매칭되는 곳에 저장한다. yyyymmdd 날짜별로 월별, 연도별로 구성해서 데이터를 기준으로 나누어서 넣는다. 데이터에서 기준을 잡고 분류하는 방식과 정책을 샤딩이라고 한다. 클러스터링은 모든 데이터이 정합성이 맞아야 하기 때문에 많은 비용이 발생할 수 있다. 샤딩은 모든 데이터를 들고있지 않고 범위를 정해서 규칙에 따라 가지고 있다. 꼭 샤딩이 유리한 것은 아니고 서비스 유형에 따라서 샤딩이나 클러스터링을 사용한다. *샤딩 종류 모듈러 샤딩(Modular Sharding) 레인지 샤딩(Range Sha.. 2021. 11. 7.
DNS 일반적인 www.mystyle.com 주소를 도메인 이름이라고 하며, DNS는 도메인 이름을 IP로 변환하여, 브라우저가 인터넷 자원을 이용할 수 있도록 한다. 스케일 아웃 방식을 사용하여 서버가 여러대가 있다면, 각 서버는 ip, servername(host, hostname)을 가진다. 도메인이 같은 경우, host 이름을 다르게 설정하여 각각 구체적인 서버에 접근할 수 있도록 한다. ex) hostname.domain.com IANA가 port 번호를 관리하는데, 80은 HTTP 전송을 위한 포트로 정해져 있다. 구체적으로 정해져 있는 포트와 역할은 well-known이라고 하고 다음 문서에서 확인 가능하다. https://ko.wikipedia.org/wiki/TCP/UDP%EC%9D%98_%ED.. 2021. 11. 7.
웹서비스 확장전략 웹 서비스 확장전략 유형 - SI 개발 (고객사 시스템 특정 부분만 진행) - 솔루션개발 (db접근제어, 암호화, B2B) - 서비스개발 (회사-B2C, 카카오톡) : 사용자들이 많기 때문에 고가용성을 고려해야한다. (*서비스개발이 아니면, Spring Cloud가 필요하지 않다.) * 스케일 업, 스케일 아웃 - 스케일 업 스케일업은 1대의 성능을 최대로 끌어높이기 위한 전략이다. 하지만 무중단 배포에는 취약한대, 서버가 1대이기 때문에 업데이트를 하려면 서버를 껐다가 켜야하므로 중간에 서비스가 끊긴다. -스케일 아웃 여러대의 서버가 트래픽을 분산해서 처리한다. 안정적인 장애대응 처리가 가능하다. 블루 그린 배포는 여러 대의 서버가 있는 스케일 아웃 방식에서 무중단 배포가 가능하다. 이전 버전(befo.. 2021. 11. 7.
TIL_211028 1. Facts(사실, 객관) - mybatis xml 쿼리문 작성하기 2. Feelings(느낌, 주관) mybatis xml 쿼리문을 작성했습니다. 파라미터는 어떻게 넣는지, 리턴타입은 어떻게 받는지, 또 리스트로 넘어갔다면 어떻게 해야할지? 고민이 되었습니다. 회사에 있는 대부분 프로젝트는 List 자체를 파라미터로 넘기지 않습니다. 아무래도 내부적으로 다시 foreach를 돌리는 것이 공장히 번거롭기 때문일 것입니다. 따라서, List에서 단일 객체를 순차적으로 쿼리로 돌리는 방법을 사용하고 있습니다. 이렇게 하는 것이 오히려 혼란 방지를 한다는 점에서 좋다고 생각합니다. 자동으로 sequence가 증가하기 위해서 oracle은 어떻게 해야하는지도 알 수 있었습니다. 한가지 방식만 계속 고집해서 .. 2021. 10. 28.
TIL_211027 1. Facts(사실, 객관) - JWT 토큰, Refresh토큰 공부 및 정리하기 2. Feelings(느낌, 주관) - 드디어 SPA 환경에서 JWT를 학습했습니다. JWT는 서로 다른 endpoint를 가진 환경에서 사용하는데, 기존의 세션이 스케일 아웃을 하거나, 여러 도에민에서 요청이 왔을 때, 정합성을 유지하는 전략이 어려워집니다. 또한 react, vue 등의 프레임워크를 프런트에서 사용한다면 더이상 세션은 유효하지 않습니다. jjwt, java-jwt 2가지 방식으 라이브러리가 있으며, 기존에 세션 관련 커스터마이징을 했지만, 이번에는 JWT 사용을 위한 커스터마이징을 했습니다. 어느 위치에, 어떤 순간에, 어떠한 방법으로 JWT 토큰을 Client에 넘겨주고, 검증을 하는지 알 수 있었습.. 2021. 10. 27.
반응형