목록분류 전체보기 (375)
잡동사니
안녕하세요. yeTi입니다. 오늘은 Mybatis를 사용하면서 결괏값을 받은 Object의 값이 상이하게 맵핑되는 현상을 해결한 내용을 공유하고자 합니다. 현상 MyBatis에서 sqlMapper를 활용하여 결괏값의 Object 맵핑 시 object의 필드에 예상과는 다른 값으로 맵핑되는 현상이 발견되었습니다. Mapper.xml TestEntity.java @Getter @Setter @Builder public class TestEntity { private Integer id; private String name; private String nickname; ... }Result -- SQL 결과 id = 10 nickname = yeti name = null -- Instance 값 TestEnt..
안녕하세요. yeTi입니다. 오늘은 백기선님의 스프링 강좌중 하나인 예제로 배우는 스프링 입문 의 완주 후기를 공유하려고 합니다. 강의 수강 계기 백기선님의 유튜브 동영상을 보다가 스프링을 제대로 공부했는지 5분안에 확인하는 방법 을 봤는데요. 문제가 이거였습니다. 외부 라이브러리를 사용하는 코드가 포함된 함수를 테스트하려면 어떻게 해야하는가? 단, Mock framework을 사용하지 않는다. 그래서 전 외부 라이브러리를 상속받은 mock 클래스를 구현하여 테스트 코드에 활용하는 것을 생각했습니다. (@SpyBean @MockBean 의도적으로 사용하지 않기 - 기억보단 기록을 참고) 하지만 백기선님의 해결책은 스프링에서 제공하는 IoC와 PSA를 활용해서 다음과 같이 제시합니다. 외부 클래스를 랩핑할..
안녕하세요. yeTi입니다. 금일은 SNS서비스의 인증 서비스를 개발하면서 사용했던 암복호화에 대한 기본 지식을 공유해보고자 합니다. 인코딩 (Encoding) 인코딩이란, 어떤 정보를 정해진 규칙에 따라 변환하는 것을 말합니다. 이를 테면 컴퓨터가 사용하는 이진 데이터를 사람이 인식할 수 있는 문자로 변화하는 것도 바이트 데이터의 인코딩(UTF-8)에 의해 생성되는 것입니다. 헥사 (HEX) 헥사 인코딩이란, 2진 바이너리 데이터를 16진수 데이터로 표현하여 데이터량을 줄여주는 역할을 한다. URL URL 인코딩은 URL에서 정의한 예약어를 다른 형태로 치환해주는 역할을 합니다. Base64 Base64 인코딩 은 64진수 인코딩으로 헥사 인코딩보다 더 간결하게 데이터를 표현할 수 있습니다. Base6..
안녕하세요. yeTi입니다. 오늘은 WEB2-Domain Name System (생활코딩) 을 완주한 후기를 기록하려고 합니다. 강의 수강 계기 현재 제가 블로그에 사용하는 이미지 파일들을 저장하기 위해 개인 나스를 사용하고 있는데요. HTTP로 도메인을 제공해줘서 잘 사용하고 있었습니다. 그런데 2021년 1월에 출시한 Chrome 88 부터는 모든 혼합 콘텐츠(Mixed Content) 다운로드를 차단하면서 HTTP로 제공하는 제 이미지 파일들이 크롬에서 안나오기 시작한것이죠.ㅜ 그래서 어떻게하면 HTTP로 사용하고 있는 도메인을 URL 변경없이 HTTPS로 적용할 수 있을지에 대해 고민하는중에 DNS에 대해서 먼저 알아야겠다는 생각이 들어서 강의를 정주행하게 됐습니다. 배운점 IP와 Host 인터넷..
안녕하세요. yeTi입니다. 오늘은 한국정보보호센터에서 제공하는 Web Java 시큐어코딩 교육을 수강한 후기를 공유하려고 합니다. 수강 계기 회사 프로젝트의 주관사 요구사항으로 수강하게 되었습니다. 강의 정보 기관 : (주)한국정보보호교육센터 교육명 : Web Java 시큐어코딩 강사 : 전상민 수석연구원 기간 : 2022년 01월 19일 ~ 2022년 01월 21일 10:00 ~ 17:00 (18h) 배운점 최신 개발보안 사고 핵심 키워드 웹사이트 해킹 웹사이트를 직접적으로 공격하는 방식 공급망 해킹 개념 : 서비스를 직접적으로 공격하는것이 아니라 제공자 개발자의 PC나 패치파일을 감염시킴으로써 서비스에 영향을 주게하는 방식 해결책 예시 jar파일을 내려줄때 해시검증으로 신뢰성을 얻는 방법 사례 위즈..
안녕하세요. yeTi입니다. 오늘은 Java 입문 수업 (생활코딩) 을 완주한 후기를 기록하려고 합니다. 강의 수강 계기 9년넘게 자바라는 언어를 다루며 개발자라는 직업을 가져오고 있는데요. 그럼에도 자바를 잘하는가? 자바에 대해서 많이 아는가? 라는 질문에 감히 그렇다라는 대답을 할 수 없었습니다. 그래서 기회가 되면 기초 수업이라도 지속적으로 들으며 놓치고 있는 부분이 있진 않는지 점검을 하려고 합니다. 이번 생활코딩의 자바 입문 수업도 기초적인것을 놓치고 있는것이 있진 않는지 확인차 강의를 듣게 됐습니다. 배운점 객체 지향 프로그래밍 객체 지행 프로그래밍은 절차 지향 프로그래밍의 믄제를 해결하기 위해 나온 개념중 하나이다. 절차 지향 프로그래밍의 규모가 커질수록 유지보수하기가 힘들어졌고, 이를 해결..
안녕하세요. yeTi입니다. 오늘은 Spring MVC를 공부하기전에 서블릿을 공부하는 시간을 가져보고자 합니다. 서블릿 이전에는 CGI (Common Gateway Interface)를 사용했는데 요청이 있을 때마다 새로운 프로세스가 생성되어 응답처리가 무겁다는 단점이 있었습니다. 이를 Servlet이라는 클래스를 만듬으로써 자바 개발자들이 보다 쉽게 웹 어플리케이션을 만들 수 있도록 합니다. 이 문서는 Java™ Servlet Specification - Version 3.1을 참고하여 작성했습니다. 개념간의 관계를 그린 개념도 입니다. Servlet : 서블릿 구동 Filter : 요청 필터링 Servlet Context : 서블릿간 정보공유 Servlet Container : 서블릿 관리자 ▲▲▲..
안녕하세요. yeTi입니다. 오늘은 오픈나루에서 진행하는 클라우드 네이티브 비대면 워크샵에 참여한 후기를 공유하고자 합니다. 진행자 : 클라우드 사업팀 박준영, 클라우드 서비스팀 이홍구 컨테이너 기술의 이해 컨테이너 기술은 표준화된 방식으로 서비스를 포장할 수 있는 기술입니다. Container vs Virtualization 직접도 비교 VM은 부팅시 하드웨어 및 OS 부팅이 필요하기 때문에 분 단위의 시간이 필요하지만, 컨테이너의 경우에는 프로세스만 시작하면 되기 때문에 초단위의 시간만 있으면 됩니다. 따라서 버스팅 이벤트 발생시 컨테이너가 더 빠르게 대응할 수 있는 장점이 있습니다. 가상서버의 고질적인 문제는 거대한 이미지 사이즈, 느린 시작 시간, VM간의 환경 불일치가 있습니다. 이러한 문제를 ..
안녕하세요. yeTi입니다. 업무환경에서 1년간 MSA에 대해 고민하고 적용해본 후기를 공유하고자 합니다. MSA란 MSA(Microservice Architecture)란, 개념 이해하기에 언급했듯이 MSA에 대해 다음과 같이 정의했습니다. 클라우드 인프라를 사용할 것 도메인별로 데이터를 나눌것 Devops를 적용할 것 서비스간 통신은 간결하게 할 것 실패를 위한 설계를 할 것 모니터링을 할 것 적용기 저를 포함한 3명의 팀원이서 위의 것을 모두 고려하기에는 한계가 있다고 판단하여 선별적으로 적용했습니다. Bare-metal에 Kubernetes를 활용하여 컨테이너화 관리편의상 DB인스턴스를 나눠서 관리하지 않는 대신 쿼리상 조인을 지양 간단한 Devops 적용 RestAPI와 Kafka를 활용하여 서..
안녕하세요. yeTi입니다. 오늘은 K-MOOC의 강좌인 Microservice 설계 및 구현을 듣고 내용을 정리한 것을 공유하고자 합니다. 강좌를 보고난 후 MSA를 하기 위한 설계적 방향성을 가질 수 있는 계기가 되었고, 어떠한 수준이 되어야 우리는 MSA를 하고 있다고 할 수 있는지도 이해할 수 있는 계기가 되어 개인적으로 유익한 시간이었습니다. Microservice 개념과 특성 Biz민첩성과 아키텍처 요건 시스템이 비즈니스에 유연하게 대응하기 위해서는 새로운 서비스의 추가 및 변경이 용의해야하고 이벤트에 따른 트래픽의 증감에도 유연하게 대응해야 합니다. 이에 대응하기 위해서 하드웨어 수준에서는 클라우드 서비스를 활용하여 scale-up이나 scale-out을 유연하게 할 수 있는 기반을 마련하고..