본문 바로가기
반응형

전체 보기183

[리팩토링] HABIT - 기본 다지기 Intro정보처리 산업기사 실기 시험을 준비하느라 시험이 끝난 후 UI 작업에 돌입하여 어제부로 UI 작업이 끝났다.시험도 잘 봤고 이제는 프로젝트만 완벽하게 해내면 된다. 오늘은 리포지토리 생성 후 현재까지 작업한 UI 관련된 파일들을 push 하는 작업을 하였다. 해당 과정에 대해서 자세히 설명해 보겠다!! 진행 상황UI 작업먼저 UI를 얼추 진행한 상태이다. 해당 프로젝트의 관리자 페이지는 같이 프로젝트를 진행하고 있는 팀원이 하기로 했고, 나머지는 내가 작업하기로 했다. 내가 작업해야 하는 부분은 관리자 페이지를 제외한 모든 페이지이며, 30 페이지 정도 된다. 기존 코드에서의 필요 없는 부분들과 지저분한 코드들을 최대한 깔끔히 정리했고, 현재 내가 맡은 모든 페이지는 작업이 완료된 상태이다. t.. 2024. 5. 9.
2024 1회 정보처리 산업기사 실기시험 후기 Intro드디어 실기 시험을 보았다. 이번 공부는 너무 힘들었다. 외워야 할 것들이 너무나도 많았기 때문이다. 결론적으로 시험 후기를 쓸 수 있는 이유는 이번 시험의 커트라인은 무사히 넘긴 것 같아서이다. (수제비 카페의 문제복원을 통해 답을 추측해 낼 수 있었다) 이제 어떻게 실기를 준비했는지 적어보겠다. 교재교재는 '수제비' 책을 선택했다. 수제비 책을 선택한 이유는 필기를 수제비 책으로 보았기 때문이었다. 익숙한 느낌의 책을 보는 것이 나을 것 같다는 생각으로 해당 책을 골랐는데... 문제점이 너무나도 많았다. 1. 늦은 출간일출간이 늦어지자 해당 카페에 유저들의 책 출간에 대한 질문들이 많이 올라왔고, 나 또한 '도대체 책을 언제 출간하려 하는 거지?' 싶었다. 결국 책 출간은 시험 한 달 전인 .. 2024. 5. 2.
[리팩토링] 중단했던 리팩토링 재시작 Intro 학원 교육때 진행했던 '취미/여가 중계 플랫폼 HABIT'은 해당 프로젝트는 JSP와 Mybatis로 만들어졌는데, Thymeleaf와 JPA로 작년에 리팩토링을 진행했다. 하지만 리팩토링을 진행하다가 중단했었다. 그 이유는 그때 당시 JPA가 숙지되어있지 않았고, 페이지가 너무 많아서 Thymeleaf로 바꾸는 과정이 너무 힘들었다. 그때에는 '나는 백엔드 개발자가 될거야' 라는 생각 때문에 Thymeleaf로 바꾸는 과정에 시간과 에너지를 쏟는게 의미가 있는지에 대한 생각이 들었고, 일단 중단하고 공부한 후에 진행하자는 생각이 컸다. 그래서 리팩토링을 중단하고 더 공부를 하고, 이런저런 프로젝트에 참여하며 시간을 보냈다. 그러다보니 생각이 많이 바뀌었다. 막상 취업 시장에 들어가보니 현재 .. 2024. 3. 29.
[리팩토링] Redis와 함께하는 인증 구현 Intro saving이라는 예산 관리 프로그램을 처음 기획했을 때는 JWT 인증 방식으로만 구현했었다. JWT 인증 방식으로 구현했을 때의 장점은 토큰 방식의 인증이므로 무상태가 유지된다는 것, 유저가 자신의 아이디 또는 서버에서 발급된 아이디(엔티티 아이디)를 가지고 있지 않아도 JWT 하나로 해결된다는 점이 좋았다. 그렇기에 JWT를 다루는 건 더 조심스러워야 한다고 생각했는데, 인증을 한 개의 토큰으로만 하려고 하니 여러 가지 문제가 생겼다. 그 문제점을 해결하려 Redis를 이용하여 Access 토큰, Refresh 토큰을 이용한 인증구현으로 리팩토링 하게 되었다. 단일 토큰 인증방식의 문제점 토큰 탈취 시 발생 위험 단일 토큰만으로 인증을 하게 됐을 때 생기는 문제점은 토큰 탈취이다. 하나의 .. 2024. 3. 14.
Redis 트랜잭션 Intro 기존 프로젝트에 Redis + refreshToken, accessToken을 이용한 인증을 적용 중이다. 현재는 로그인 부분을 리팩토링 중인데 redis에 refreshToken값을 넣는 로직을 만드는 도중 'redis 트랜잭션은 어떻게 하지?'라는 의문이 생겼다. 그래서 이번 글에는 Redis 트랜잭션에 대해 공부한 내용을 적어보겠다. Redis 트랜잭션 MULTI - Redis의 트랜잭션을 시작하는 명령어 - 트랜잭션을 시작하면 Redis는 이후 커맨드는 바로 실행되지 않고 queue에 쌓이게됨 EXEC - 정상적으로 처리되어 queue에 쌓여있는 명령어를 일괄적으로 실행 - RDBMS의 Commit과 동일 DISCARD - queue에 쌓여있는 명령어를 일괄적으로 폐기 - RDMS의 R.. 2024. 3. 11.
2024 1회 정보처리 산업기사 필기시험 후기 IntroCS 지식을 좀더 단단하게 만들고 동시에 자격증도 얻고, 또한 나의 간절함을 이력서에 보여줄 수 있는 부분을 만들어야겠다고 생각했다. 그 첫 시작이 바로 '정보처리 산업기사 자격증 따기'였다. 결론적으로 나는 올해 3월에 본 필기시험에 합격했고 4월에 실기 시험을 볼 예정이다. 어떻게 필기를 준비했는지와 필기를 준비하며 얻었던 것들을 적어보려 한다. 교재교재는 '수제비' 책을 선택했다. 딱히 해당 교재를 선택한 이유는 없었다. 왜냐하면 자격증을 따는 목적 자체는 이력서에 올리기 위함이지만, 공부의 목적은 CS 지식을 더 갖추기 위함이었기 때문에 어떤 책이든 상세히 공부할 생각이었기 때문이다. 이 부분에 있어서는 교재의 이론 설명이 크게 뒷받침된다는 생각은 들지 않았으나, 자격증을 따는 것에 의의.. 2024. 3. 6.
[리팩토링] Access Token, Refresh Token 인증 프로세스 Intro 리팩토링 중인 프로젝트의 토큰 인증 프로세스를 구상해 보았다. 토큰 형식 Access Token 형식 : JWT Refresh Token 형식 : UUID Refresh Token 저장 형태 Key (String) refreshToken:{사용자 아이디} Value (String) real_refresh_token 토큰 인증 프로세스 순서도 결론 구글링과 github의 다른 개발자들의 프로세스를 찾아보아도 인증 프로세스가 일관되지 않아서 굉장히 고민을 많이 했다. 특히 Access Token 재발급 시에 Refresh Token 갱신 유무를 고민했는데 마침 Refresh Token 탈취 위험에 대한 OAuth의 Refresh Token Rotation에 대한 글을 읽었다. Refresh Tok.. 2024. 3. 5.
Redis란 무엇인가 Intro 개인 프로젝트 리팩토링 중 첫 번째로 Access Token, Refresh Token을 이용한 인증을 구현해보려 한다. 그전에 Redis에 대해서 알아보자! Redis란? Redis는 NoSql In-memory database이다. 주로 캐싱, 세션 관리 등의 용도로 사용된다. Redis는 키-값 형태로 메모리에 저장된다. 메모리의 경우 전기적 신호를 통해 데이터에 직접 접근하기 때문에 빠른 데이터 액세스가 가능하다. 또한 메모리접근이 디스크 접근보다 더 빠른데, 메모리의 경우 디스크에 비해 물리적으로 cpu와 더 가깝기 때문이다. 이러한 이유로 인해 디스크 기반의 데이터베이스보다 Redis의 속도가 더 빠르다고 할 수 있다. Redis 설치하기 Redis 공식 문서에 따르면 Redis는 .. 2024. 2. 27.
Dockerfile이란 무엇인가 Intro 자동 배포를 공부하니 정말 알아야 할 것들이 산더미다. 그중에서도 핵심적인 부분이 프로젝트를 JAR 파일로 빌드하여 이미지로 생성하고, 그것을 가상의 컴퓨터에서 실행시키는 것인데, 자동 배포를 구글링을 하여 어찌어찌 성공했으나 이미지 빌드로 Jib 라이브러리를 사용하니 그 과정에 대한 부분은 전혀 모른 채 사용하게 됐다. 어차피 회사마다 CI/CD의 의미가 다르다고 하니 도커 이미지 빌드 과정도 배울 겸 오늘은 dockerfile에 대해서 글을 써보고자 한다. Dockerfile 이란? Dockerfile이란 도커 이미지를 만들기 위한 스크립트 파일이다. 내부에는 도커 이미지를 만들기 위한 명령어들이 순서대로 기술되어 있다. Dockerfile을 이용하지 않고 도커 이미지를 만들 수 있는 방법.. 2024. 2. 5.
반응형