전체 글 133

[업무에 바로 쓰는 SQL 튜닝] 1장. MySQL과 MariaDB 개요

버전 확인 방법-1 show variables like 'version'; 결과값 버전 확인 방법-2 SELECT @@version; 결과값 1.1.1 부각 배경 MySQL은 상용 버전, 무료 버전이 있다 MariaDB는 완전한 오픈소스 소프트웨어 1.1.2 DB 엔진 영향력 U2L(Unix to Linux), U2C(Unix to Cloud) 흐름을 타고 오픈소스 데이터베이스로 마이그레이션이 주류를 이룬다. 1.2 상용 RDBMS와의 차이점 1.2.1 구조적 차이(MySQL, MariaDB 와 Oracle 간의 차이 중심) 기본적으로 데이터가 저장되는 스토리지 구조 측면에서 큰 차이 오라클DB는 통합된 스토리지 하나를 공유하여 사용하는 방식 (Shared everything) → 사용자가 어느 DB 서..

CS/DB 2023.12.02

백엔드 CS 면접 대비 멘토링 (안재홍 멘토님)

Q. HTTP에 대해 아는 대로 설명 W. 인터넷에서 서버와 클라이언트 간의 통신을 하기 위해 정한 규약이 HTTP이다. - 무상태성(stateless) - HTTP method (GET, POST, PUT, DELETE, OPTIONS), status code (401, 409 ...) Q. HTTP 버전 별로 구분? - 보통은 1.1을 사용한다. 1.0은 흔히 보고 있는 헤더, 상태코드 추가가 됐습니다. 1.1은 keep-alive TCP는 신뢰성 있는 통신을 하기 위해 커넥션을 맺을 때 3 way handshake 과정이 있다. 매번 하기 어렵다. 기존 연결을 사용 2.0 동기식 처럼 처리하면 느리다. 멀티플랙스드 스트림 한 개로 동시에 여러개 보낸다. 그래도 환영 받지 못했다. 3.0 TCP라 느..

서버 환경의 변화 (변재영 멘토님 특강)

'어떻게 하면 서버를 잘 운영할 수 있을까?' 1. 도커가 등장하기 전 서버 운영 - 자체 서버 운영 - 서버를 설정하기 위해 많은 노력과 시간이 필요 - 성능이 좋은 걸 미리 구매하고 효율적인 사용을 위해 여러 애플리케이션을 설치 - 어려운 상태 관리 1.3 어려운 상태 관리 상태를 누가 언제 어떻게 변경했는지 알 수 있을까? 몇 개월 전에 만들었던 메뉴얼을 믿을 수 있을까? 똑같은 서버를 하나 더 만들 수 있을까? -> 재현 가능한 상태관리 (설정 관리 도구) 명령어를 통한 서버 관리를 지양 상태를 관리하는 코드를 이용하여 서버 관리 선언적 서버 상태 정의 가상 머신의 등장 하나의 서버에 여러개의 가상 서버를 설치할 수 있음 -> 각각의 가상 서버에 limit을 제한할 수 있음 Mutable vs I..

[슈코데이 세미나] 불가능을 가능으로 만드는 토스의 엔지니어링 직군

개발자 친구를 만나려고 연락을 했는데 해당 세미나에 참가한다고 해서 급하게 추가 신청해 참가했고, 일정상 첫번째 세션에만 참가할 수 있었다. 첫번째 세션을 시작하기 전 슈퍼코더의 해외 개발자 채용 서비스에 대해 간략히 설명해주셨다. 개발부터 분석까지 1주일이면 끝나는 반자동 시스템 발표자: 토스뱅크 프론트엔드 엔지니어 김선진 제품을 빠르게 만들기 위한 3가지 조건 - 제품 특성 - 자동화된 도구 - 개발 환경 1. 제품 특성 이벤트 페이지 등 빠르게 만들 수 있는 제품 2. 자동화된 도구 - UI 마크업: 디자인 시스템이 만들어주는 코드젠 활용 - 상태에 따른 복잡한 화면 분기처리: 선언적으로 흐름을 관리할 수 있는 useFunnel 라이브러리 - 로깅: Neo Logger class - A / B Te..

단축 URL 생성 (다담다)

https://dadamda.me 세상의 모든 URL, 다담다 내용에 따라 자동으로 북마크를 구성하는 신개념 컨텐츠 맞춤 스크랩 서비스, 다담다 dadamda.me https://blog.aaronroh.org/138 AWS 서버리스 단축URL 서비스 만들기 - 1 AWS의 인프라를 이용해 단축 URL 서비스를 만들어보려고 한다. 단축 URL 서비스는 https://google.com/fwarij4t3qt9pi3t3qtto3t3rzx22!31r31r/dafadfqefef와 같이 긴 URL을 my.ly/abcd로 축약하여 나타낼 수 있는 서비스이 blog.aaronroh.org 해당 블로그를 참고하며 AWS Lambda와 AWS S3를 이용해 빠르게 단축 URL을 생성하고자 한다. 해당 블로그에서는 랜덤으..

blob? Formdata? MultipartFile? (다담다)

어제 파일을 받아 보드 썸네일 이미지를 S3에 업로드할 수 있는 API를 만들었다. PR 리뷰 중 "파일을 고객의 스토리지에 몰래 저장하고 그걸 올릴 수 있는지?"에 대한 질문이 들어왔는데 텍스트 이외의 파일 형식에 대해 지식이 부족했기 때문에 관련 이슈를 해결하며 공부해보려고 한다. 먼저 우리는 스크린샷을 저장하기 위해 html2canvas라는 라이브러리를 사용한다. DOM을 매개변수에 넣어주면 css를 그려서 스크린샷을 찍은 것처럼 이미지를 만들어준다. html2canvas 객체를 Multipart formdata로 받아주기 위해서 어떤 변환이 필요할 지 고민해보자. https://developer.mozilla.org/en-US/docs/Web/API/FormData FormData - Web AP..

분산 서버 구축 이후 로그인 이슈 (다담다)

https://dadamda.me 세상의 모든 URL, 다담다 내용에 따라 자동으로 북마크를 구성하는 신개념 컨텐츠 맞춤 스크랩 서비스, 다담다 dadamda.me 현재 다담다 서비스에는 구글, 카카오톡 2가지 로그인을 사용하고 있다. Spring Security에서 제공하는 Oauth 로그인 API를 이용해 로그인을 구현했는데, 원래는 잘 작동되는 것이 분산 서버를 구축하고 난 뒤 로그인이 되지 않는 이슈가 발생했다. Spring Security는 기본적으로 세션과 쿠키를 가지고 동작된다. 서버가 분산 환경으로 바뀌면서 각 서버 메모리에서 갖고 있던 세션을 외부 공유 세션 저장소로 변경해야 한다. 외부 공유 세션의 종류는 이전 포스팅에 소개되어 있다. https://godhkekf24.tistory.c..

Spring Session

Spring Session은 사용자의 세션 정보를 관리하기 위해 제공된다. - HttpSession: RESTful API에 작동하도록 헤더에 세션 ID를 제공하는 것을 통해 어플리케이션 컨테이너 중립적인 방식으로 대체할 수 있다. - WebSocket: WebSocket 메시지 수신 시 HttpSession 활성 상태를 유지하는 기능을 제공한다. - WebSession: 어플리케이션 컨테이너 중립적인 방식을 Spring WebFlux의 Websession으로 대체할 수 있다. Spring Session을 통해서 해결할 수 있는 문제 세션은 일반적으로 서브의 메모리에 저장되므로 분산 환경에서 문제가 될 수 있다. 해당 문제를 해결하기 위해선 공유 세션 저장소를 구현해야 한다. Spring Session은..