Java & Spring
-
API 에러 응답 논쟁Java & Spring 2024. 9. 19. 16:32
API 개발자의 응답에 클라이언트 개발자의 이슈가 제기됨. (아래 예시는 그냥 예시일 뿐)HTTP/1.1 200 OK{ "errorCode": "1001", "description":"This is invalid Email."}HTTP code가 200인데 에러가 발생하는게 이상하다는게 이번 주제다.내가 보기엔 맞는 말인것 같은데, 생각보다 백엔드에서 이게 문제라고 보지 않는 경우가 있다.일단 백엔드 입장은 통신은 잘됐으니까 200이 맞고, 에러코드랑 내용을 전달했으니 문제 없지 않나요?개발팀 전체에서 협의가 된 부분이고, 이게 문화면 크게 문제라고 하기에도 애매한 상황인 것 같다.게다가 어떤 분은 HTTP code를 계속 노출하면, 해커의 무작위 요청으로 시스템을 분석할 여지가 있어 정부의 시큐어 ..
-
EDI 구축 회고록Java & Spring 2024. 8. 29. 15:04
전 회사는 중고차 해외 유통, 물류업계라 해운 선사와 협업이 많았다. 수출 물량이 많을 때면 선적관리팀이 선하증권을(이하 B/L) 발급받기 위해 밤낮 고생을 하면서 수기로 서류작업을 했다. EDI는 이럴 때 필요하다.1. EDI는 뭘까?구글링하면 여러 개념이 나오는데, 간단히 말해서 두 기업이 사전에 약속한 포맷으로 (Json, XML 등) 사업에 필요한 데이터를 주고 받는 시스템이다. 그럼 왜 필요할까?2. EDI로 얻는 기업의 이익일단 EDI는 EDI서비스를 제공하는 업체 솔루션을 사도 되고, 자체적으로 구축해도 된다. EDI가 필요해지는 시기는 사업의 규모가 커지며, 데이터가 많아지지만 인력 충원은 없을 때 특히 빛을 발한다. 일단 서류 작업이 없어지고, 휴먼 에러 방지, 내부 인력의 업무 효율 증..
-
Stream vs for loopJava & Spring 2024. 5. 19. 16:06
Java 8부터 사용이 가능한 Stream은 배열과 Collection의 데이터 처리에 초점을 둔 기능이다.평소에 나는 업무 시 코드량을 줄이고 가독성을 높이려고 Stream을 사용하곤 했다. 알고리즘을 풀때면 for 문을 줄줄이 쓰기보단 단 몇줄의 Stream을 좀 더 선호했었다. 그러다가 Stream을 사용하다 제한시간을 통과하지 못한 케이스가 있어, Stream과 전통적인 loop을 비교해 알아봤다.결론부터 말하자면, Stream은 일단 테스트 데이터가 매우 많아야 효율적이다. 또는 각 원소마다 컴퓨팅 연산이 오래 걸릴 수록 Stream 사용이 적합하다. 그렇다고 for loop이 나쁘냐? 그것도 아니다. for loop이 일반적으로 Stream보다 빠르다.내가 파악하기로 Stream보다 for l..
-
소셜 로그인 회고 (Spring Security)Java & Spring 2024. 2. 4. 22:24
사이드 프로젝트로 개발 중인 애플리케이션에 소셜 로그인을 도입하게 되었다. 일단은 구글 로그인을 개발해야 하는데, 일반적으로 쓰는 방법인 1. oauth2Login()을 사용한 서버에서 구글 로그인 페이지로 요청 2. 토큰 받고 다시 구글에서 내 서버로 redirect 하는 것이 아닌, 앱에서 일련의 과정을 처리 후 서버로 토큰만 보내주는 구조를 채택했다. 이유는?? 이라 묻는다면 트래픽과 처리량을 띵킹해본다...대규모 서비스가 될거라 상상하며 ㅋㅋ 로그인 과정에 있어 최대한 우리 서버에 부담을 덜고 싶었다. 앱에서 구글을 바로 찔러 토큰을 받아낸다면, 굳이 우리 서버에서 구글로 토큰 요청을 할 필요가 없을 것 같았다. 이런 요소 하나하나가 모이면... 적은 돈으로 가성비 좋게 만들 수 있지 않을까..?..