본문 바로가기
반응형

전체 글321

OpenSSL 취약점 발견되다? 😄 서론 OpenSSL에서 'CRITICAL'한 취약점이 발견되었다는 소식을 들었다. OpenSSL이 등장한 이래 두 번째 CRITICAL 취약점이라고 한다. (첫 번째 취약점은 2016년) 나에게도 영향이 미칠지에 대해 궁금해서 찾아보게 되었다. 😏 OpenSSL이란? 컴퓨터 네트워크를 통한 통신을 보호하거나 상대방을 식별해야 하는 응용 프로그램용 소프트웨어 라이브러리이다. 대부분의 HTTPS 웹사이트를 포함해 인터넷에서 널리 사용되고 있다. SSL, TLS 프로토콜의 구현이 포함된 오픈 소스로써 기본적인 암호화 기능이나 다양한 유틸리티 기능을 제공하고 있다. 😮 무엇이 문제인가? OpenSSL의 개발자인 Mark Cox가 아래와 같은 트윗을 남겼다. OpenSSL 공식 사이트가 분류한 CRITICAL.. 2022. 10. 30.
[Spring] @Transactional이 동작하지 않는다?😨 부제: 동일한 bean에서는 @Transactional 적용이 되지 않는다. 핵심 내용 바로가기 😎 문제 상황 줍줍은 자꾸만 사라지는 슬랙 메시지를 백업해주는 서비스입니다. 최근 줍줍에서는 신규 이용자들의 유입을 위해 '워크스페이스 등록'이라는 기능을 추가했습니다. 해당 기능의 확장으로 기존에는 특정 워크스페이스에 초대된 사용자들만 서비스를 이용할 수 있었지만 이제는 누구든지 워크스페이스를 등록하고 이용할 수 있게 되었습니다. 해당 기능을 추가하며 팀 내에서 워크스페이스 등록하면 바로 로그인이 되게 만들 것이냐, 로그인 과정을 따로 거치게 만들 것이냐에 대한 논의가 있었는데요. 기존에는 첫 회원가입 시 위 사진과 같은 절차로 로그인을 진행하고 있었습니다. 사실상 사용자는 같은 슬랙 인증을 2번 진행하고 .. 2022. 10. 27.
[우테코] 최종 데모데이 후기 우아한테크코스 4기 최종 데모데이가 무사히 종료되었습니다. 🎀 데모데이 당일 데모데이 당일 오전까지도 새로운 이슈가 끝없이 발견되었다. 급한 hotfix들을 처리하느라 잠도 4시간만 자서 정신이 혼미했던 기억이 남는다... 얼렁뚱땅 데모데이가 시작되었고 질문을 받으면 그때그때 생각나는 말을 했다. 예상치 못한 질문에 당황해서 다른 팀원한테 넘긴 적도 있었다. (써머 진짜 고마워😂) 모르는 사람에게 내 프로젝트를 설명해줄 수 있는 데모데이라는 기회를 아쉽게 보낸 것 같다. 온라인으로 진행된다지만 평일 낮의 행사라 우테코 4기들만의 축제가 되겠지.. 라고 생각했는데 생각보다 많은 분들이 방문해주셨다. 대부분 이전 기수거나 5기를 하고 싶은 사람들, 우형 직원 분들이신 것 같았다. 우리 서비스를 직접 이용해보.. 2022. 10. 22.
무중단 배포 (feat: Jenkins & Shell) 목차 서론 종류 Rolling Update Blue Green 어떤 것을 선택했는가? 무중단 배포 예제 (feat: Jenkins, Shell Script) 1. 서론 💥 지난 번에 우테코 레벨 3 인터뷰를 진행했을 때 받은 질문이 있습니다. '24시간 돌아가는 서비스에서 어떻게 새로운 변경 사항을 적용할 수 있을까요?'. 당시에는 무중단 배포에 대한 경험도 키워드도 몰랐기 때문에 서비스를 잠시 중단하고 배포한 뒤 다시 시작하는 경우밖에 생각이 나지 않는다고 대답했다. 기존 데이터에 영향을 주지 않으면서 무중단으로 서비스를 제공하는 방법에 대해 알아보면 좋을 것 같다는 조언을 듣고 이번 기회에 줍줍에 무중단 배포를 시도하기로 했다. 2. 종류 🔮 💜 Rolling Update 이전 버전에서 새 버전으로 .. 2022. 10. 19.
[Spring Boot] 기본 Logging Framework는 진짜 'Logback'일까? 😮 내 프로젝트에 Log4j 가 있다? 현재 Spring Boot 2.7.1 버전을 사용하고 있다. 로깅 프레임워크에 대한 글을 작성하다가 라이브러리 의존성을 찾아보게 되었다. 그런데 예상 외의 의존성이 발견되었다. (아래 사진 참고) Spring Boot의 디폴트 로깅 프레임워크는 Logback이라고 알고 있는데 저 log4j는 뭘까? 혹시나 버전 업이 되면서 추가된걸까? 라는 의문에 다른 버전도 살펴봤다. 하지만 1.0.0 때부터 이미 존재해왔다. 😎 Spring Boot의 디폴트 Logging Framework 여지껏 log4j2를 적용하려면 spring-boot-starter-logging를 exclude하고 spring-boot-starter-logging-log4j2를 추가해야한다고 알고 있었.. 2022. 10. 13.
[Spring] Local Transaction vs Global Transaction ✨ 트랜잭션 DB 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 한꺼번에 모두 수행되어야 할 일련의 연산들 트랜잭션은 데이터베이스, 메시지 큐 등 다양한 자원에서 다양한 로직을 수행한다. 때로는 여러가지 작업이 한 트랜잭션에서 일어나기를 원할 수도 있다. Java에는 자원에 접근하고 수행하는 여러 방법들을 지원한다. 각 자원마다 따로 로컬 트랜잭션을 수행할 수도 있고 여러 자원들이 한 글로벌 트랜잭션에 참여할 수도 있다. 이 문장이 어떤 의미인지는 앞으로의 글을 읽으며 천천히 이해해보자. 🌏 Local Transaction 로컬 트랜잭션을 한번 알아보기 위해 여러 자원들 중에서도 우리에게 친숙한 JDBC를 이용해서 살펴보자. JDBC는 Java Database Connectivity의.. 2022. 10. 9.
[Spring] 내 테스트에만 stub 적용하기 😈 🐹 서론 🐹 요즘 🐹줍줍🐹의 백엔드 팀에서는 큰 기능을 도입하기 앞서 테스트 코드 리팩터링에 한참 열을 올리고 있습니다. 오늘은 이 테스트 리팩터링을 하다 겪은 일에 대해 포스팅하려 합니다. 이번 리팩터링을 진행하면서 모킹을 제거하는 부분이 있었는데요. 줍줍은 Slack이라는 외부 서비스에 크나큰 의존을 갖고 있습니다. Slack 라이브러리에 대한 의존성을 갖고 있었고 해당 라이브러리를 호출하는 부분은 모킹 처리를 해두었습니다. 인수 테스트를 뜯어 고치면서 생각한 것은 모킹 작업이 계속 반복되고 지루한 작업으로 차지하고 있었습니다. 그래서 이 모킹 작업을 계속 반복할 바에는 스텁용 객체를 하나 생성해서 사용하는 것이 훨씬 편하겠다고 판단하여 모킹을 제거하기 시작했습니다. 🐹 리팩터링 시작 🐹 1. 외부 .. 2022. 10. 3.
[우테코] @MVC 프레임워크 구현 미션 학습 로그 1. 요구사항 ✨ 자세한 미션 요구사항 및 수행 내역은 깃허브 레포지토리에 branch 별로 분류해두었습니다. GitHub - yeon-06/jwp-dashboard-mvc Contribute to yeon-06/jwp-dashboard-mvc development by creating an account on GitHub. github.com 나만의 @MVC 프레임워크를 만들어보자. 이전 미션에서 HTTP 서버를 만들고 Controller 인터페이스를 활용해 MVC 프레임워크를 구현했다. 그런데 MVC 프레임워크 영역과 비즈니스 로직을 작성하는 영역이 분리되어있지 않다. 비즈니스 로직 구현에만 집중 할 수 있도록 어노테이션 기반의 MVC 프레임워크로 개선해보자. 2. 학습 내역 🔮 💜 Dispatche.. 2022. 10. 1.
[우테코] 톰캣 구현 미션 학습 로그 목차 요구사항 학습 내역 톰캣을 쓰는 이유 입출력과 버퍼 catalina vs coyote 스레드 풀 설정 추가 미션 HTTP 활용하기 Thread 활용하기 1. 요구사항 🍳 미션 수행 내역은 깃허브 레포지토리에 branch 별로 분류해두었습니다. 🥚 1단계 http://localhost:8080/index.html 페이지에 접근 가능하다. 접근한 페이지의 js, css 파일을 불러올 수 있다. uri의 QueryString을 파싱하는 기능이 있다. 🥚 2단계 HTTP Reponse의 상태 응답 코드를 302로 반환한다. POST로 들어온 요청의 Request Body를 파싱할 수 있다. 로그인에 성공하면 HTTP Reponse의 헤더에 Set-Cookie가 존재한다. 서버에 세션을 관리하는 클래스가 있.. 2022. 9. 29.
반응형