BACKEND(24)
-
SOAP 프로토콜 사용하기
담당 프로젝트에 개발 사항중 외부와 통신을 해야 하는데 restAPI가 아니라 SOAP 프로토콜로 통신해야 하는 개발 내용이 있었다. 값을 수신하기 위해서는 SOAP 수신을 위한 별도의 웹서비스를 톰캣으로 실행시켜야 하는 부분도 있었는데 송신부분에 대한 사용 예만 공유해 보겠다.SOAP 방식이 너무 생소하고 XML을 파싱해 원하는 값을 가져오는 개발이 너무 불편했다.심지어 담당 프로젝트는 SK 계열사에서 개발을 진행해야 해서 VDI 라는 별도의 가상머신 같은 환경에서 개발을 해야 했는데 속도가 느리거나 RAM이 부족하거나 여러 불편사항이 있었지만 보안 문제로 VDI 내에서의 코드나 텍스트를 외부 PC로 복사/붙여넣기 할 수 없다는 점이 더더욱 불편했다. 예를들어 개발중 오류가 발생하면 일부 키워드만 직접..
2024.05.05 -
SpringBoot + Next.js 프로젝트 회고
이 글에서는 전 회사에서 Next.js + SpringBoot + JPA 로 진행하는 프로젝트를 개발해 가면서 몰랐던 새로 알게되는 전반적인 내용들을 기록하려 한다. 회사에서 진행하는 프로젝트이다 보니 예제코드는 example로 변경해서 기록되어 있기에 정확하지 않을 수 있다. 잘못된 설명이나 오타에 대한 피드백 감사합니다. 쿠키 발급이 안되는 문제 시나리오 기존에는 accessToken과 refreshToken을 localStorage에 보관했었다. 알고보니 token을 localStorage 같은 곳에 보관하면 확장프로그램이나 기타 XSS공격과 같은 심각한 보안문제가 발생한다고 한다. 결과적으로 refreshToken은 HTTP 세션에 보관하고 accessToken은 redux 같은 메모리에만 보관하..
2024.01.11 -
SpringBoot 공부하기 2편
리플렉션 모든 클래스의 정보는 JVM 안에 있는 클래스로더가 읽어와서 메모리의 어딘가에 두는 것이다. 클래스 로더가 읽어온 클래스 정보가 곧 거울에 비친 모습과 같은 것이다. 이런 정보를 가지고 여러가지 여러가지 행동을 할 수 있다 예를들어 어노테이션이 붙어 있으면 특정 행위를 실행 한다거나 테스트를 할 때 추가 행위를 한다거나 특정 네이밍을 검색해 치환 한다거나 모두 리플렉션 덕분에 가능한 행위다. 무긍무진하게 활용될 수 있다. // 클래스 정보를 가져온다. (레퍼런스를 가져온다) Class aClass = Class.forName("me.whiteship.hello.ChineseHelloService"); // constructor를 가져온다. aClass에서 바로 newInstance()를 사용하지..
2024.01.09 -
SpringBoot 공부하기 1편
혼자 복습을 위한 용도가 주 목적이기에 모호한 설명이나 용어 사용에 주의가 필요하다 김영한님의 강의는 늘 구매하자 기억하기 실무에서는 무조건 단순하게 명확하게 개발해야 한다 헷갈리게 만들면 안된다. (개인적으로 일관되게 만드는것도 중요 하게 생각 함) 정적인 의존관계는 변경하지 않은채로 동적인 의존관계 및 주입을 변경할 수 있어야 한다. (이게 가능해야 SOLID 원칙을 잘 지킨 것 이라고 볼 수 있다.) 가장 좋은 에러는 컴파일 시점에서 발생하는 에러다 런타임 시점에서 실행해 봤을 때 발생하는 에러는 큰 비용으로 이어질 수 있다. 용어 정리 TDD -> 테스트 주도 개발 => 테스트 코드를 먼저 짠다(검증 부터 고민한다) 이 후 실제 개발을 만드는 식에 개발 방법 서비스 -> 비즈니스 로직이 포함되는 ..
2024.01.02 -
javascript, async/await 공부하기 (2편)
async/await 이란? 지금까지 비동기/동기의 의미와 왜 비동기 처리가 필요한지 등등을 간략하게 알아봤다, 그런데 ECMAScript 2017 에서 async 함수가 추가되었다. 콜백헬을 해결해주던 Promise에서 더욱 가독성을 높이고 사람의 입장에서 더욱 일기 쉽도록 만들어 준다. function hello() { return "Hello" }; hello(); 웹 브라우저 콘솔에 위 코드를 실행해 보자, 쉽다 Heollo를 반환한다 async function hello() { return "Hello" }; hello(); 위 코드는 함수 앞에 async라는 키워드가 붙었다, 실행해 보면 이런 모습이다, Promise를 반환했다 그렇다 async 키워드를 붙이면 함수가 그냥 값을 return ..
2023.12.17 -
javascript, async/await 공부하기 (1편)
자바스크립트에게 비동기란? 자바스크립트는 싱드스레드로 동작한다, 많이 들어보았을 것이다 하나의 스레드이기 때문에 한번에 하나의 작업만을 수행할 수 있다. 특히 Node.js 에서 웹서버를 구현할 때 모든 동작을 비동기로 처리하는 것은 매우 중요하다. 만약 동기로 처리하면 해당 처리가 완료될 때 까지 마치 서버가 멈춘 것처럼 다른 요청을 처리하지 못한다. 비동기가 대체 뭘까? 우리는 편의에 의해 금융/철학/과학/수학/역사/자연 등의 분야로 세상을 분리하지만 이 모든일은 동시에 일어난다. 어디서 이 문장을 봤는지 기억이 않나는데 유발 하라리의 사피엔스 라는 책에서 봤던 것 같다.. 검색으로 정확한 책이름을 찾고 싶은데 않나온다. 아무튼 실제 세상에는 모든것이 동시에 일어나는 일종의 비동기 이다. 하지만 프로..
2023.12.14