개발 정보 51

[Tech] WAS와 웹서버의 차이

웹 서버는 클라이언트가 브라우저에서 어떤 페이지 요청을 하면 웹 서버에서 그 요청을 받아서 정적 컨텐츠를 제공하는 서버이다. 정적 컨텐츠는 주로 HTML, CSS, Javascript, 이미지 등을 말한다. 웹 서버 종류: Apache, Nginx, IIS WAS 는 웹 서버 단독으로는 처리할 수 없는 데이터베이스의 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다. WAS 종류: Tomcat, JBoss 웹 서버는 정적 컨텐츠만 처리하도록 기능 분배를 해서 서버 부담을 줄인다. WAS 를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때마다 결과를 제공하면서 자원을 효율적으로 사용할 수 있다. 만약 WAS 가 정적 컨텐츠 요청까지 처리하면, 부하가 커지고 동적 컨텐츠 처리가..

개발 정보 2022.11.12

[Dev] 대용량 파일 전송에 UDP가 적합하지 않은 이유

최근에 파일 공유 서비스를 만들고 있는데 클라이언트 단에서 파일을 암호화한 뒤 그 CipherText를 다른 Client에게 전송하는 기능을 구현할 일이 생겼다.  물론 CipherText자체가 꽤나 짧은 String이라서 전송하는 Data의 사이즈가 문제되진 않을 것이라고 생각했다. 하지만 추후에 대용량 파일 전송도 염두에 두고 있었기 때문에 TCP와 UDP 중 어느 것을 쓸지 고민하고 있었다. 물론 TCP를 당연히 써야겠다고 생각했지만 UDP를 쓸 순 없을까 고민하고 있었다. 물론 File 전송은 비디오나 오디오가 아니기 때문에 전송에 있어서 확실한 보장이 필요하다. 그래서 대충은 결국은 TCP를 써야겠다고 생각하고 있었다. 실제로 TCP의 예로써 File전송이 언급되곤 한다. 하지만 개인적인 취향인..

개발 정보 2022.10.24

[SW] SOLID 원칙이란 무엇인가?

SOLID 원칙이란 무엇인가? SRP (Single responsibility principle): 단일 책임 원칙이다. 즉 클래스는 하나의 책임만 가져야 한다는 뜻이다. OCP (Open/closed principle): 개방-폐쇄 원칙이다. 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다는 뜻이다. LSP (Liskov substitution principle): 리스코프 치환 원칙으로 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다는 뜻이다. ISP (Interface segregation principle): 인터페이스 분리 원칙이다. 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다는 뜻이다. DIP ..

개발 정보 2022.09.18

[Dev] 10월 4일 페이스북 대규모 장애 원인 간단 정리

2020년 10월 4일 페이스북은 물론이고 인스타그램, 왓츠앱 모두가 한꺼번에 접속되지 않는 문제가 발생했다고 한다.  장애 원인은 간단하게 정리할 수 있었다.  페이스북의 라우트가 라우터에서 즉 쉽게 말해 네트워크 상에서 없어졌기 때문이다. 즉 페이스북으로 무언가를 보내는 길 자체가 사라졌기 때문에 전 세계 어느 곳에서도 페이스북을 이용할 수 없게 된 것이다.  기업이 커지게 되면 하나의 작은 망을 구축해서 쓰게 되는데 페이스북도 마찬가지로 모든 서버들이 하나의 단일 지점을 기준으로 외부와 소통하고 있던 상태였다. 그런데 이 연결지점인 라우터가 자신이 facebook이라는 것을 외부로 알려주는 것을 중단했기 때문에 발생한 문제이다.  내부 개발자가 실수로 설정 정보에 라우터의 정보를 삭제하는 설정까지 ..

개발 정보 2022.07.29

[Dev] HTTP에서 PUT과 PATCH의 차이

HTTP요청에서 PUT과 PATCH라는게 존재하는 것을 알고 있었는데 여태 둘이 같은 기능을 한다고 오해하고 있었다.  그러다가 Django를 학습하던 중 이 두가지를 구분해서 사용하는 예제를 보았고 분명 차이가 있다고 생각해서 오늘 찾아보았다.(생각보다 중요한 차이였다. 계속 모르고 있었다면 위험했다.) 우선 둘다 update를 한다는 점에서는 같다.  특정 객체를 디비에 밀어넣을때 내가 전달한 값으로 업데이트를 해서 넣는다는 점에서는 같다.  하지만 이 동작에서의 미묘한 차이가 있다.  PUT의 경우에는 업데이트를 할때 모든 값을 업데이트한다. 즉 모든 필드에 대해서 업데이트를 진행한다는 얘기다.  PATCH는 내가 전달한 값에 대해서만 업데이트한다. 전달한 필드에 대해서만 업데이트를 진행한다.  즉..

개발 정보 2022.07.15

[CS] Gbps 와 GBps 의 차이

계산문제를 풀 일이 있어서 이것저것 풀어보는 중이었는데 도무지 안풀리는 문제에서 막혀서 거진 30분은 소비했다. 자꾸 말도 안되는 숫자가 나와서 뭔가 이상하다는 낌새를 느꼈다. 보통 숫자들은 딱 들어맞는데 계산결과가 틀어지는 이유는 십중팔구 단위에 있다고 생각했다. 내가 단위에 대해서 뭔가 실수했거나 단위 변환에 있어서 숫자를 틀렸거나 아니면 애초에 단위 변환 과정 자체에 오해가 있다는 생각을 하게 되었다. 그리고 이러한 고민들이 맞았다는 것을 곧 알게 되었다. Gbps 와 GBps 를 보자면 슬쩍 보면 정말 비슷하다. 별생각없이 그냥 풀면 틀리기 쉽다. Gbps 는 gigabit per second 이다. GBps 는 gigabyte per second 이다. 완전히 다른 내용이다. 아래 그림을 참고해..

개발 정보 2022.04.21

[Dev] 개발자 커리어 팁

요즘 개발자 커리어에 대한 이야기가 많다.  관련해서 유튜브에 재밌는 영상이 하나 올라와서 적어본다. 모든 내용을 공감하진 않는데 그냥 재밌는 내용이다. 1. 트위터 만들기 -> 프로필 꾸민다. 어떤 기술 공부중인지. 뭐하는 사람인지!  -> 좋아하는 기술자 팔로우하고 코드 팁같은거 공유하기! 질문을 하던! 재밌는 밈을 올리던!!  2. 링크드인 사용 !  3. 깃허브잔디심으세요... 오픈소스 컨트리뷰션 해보기..  4. 포토폴리오!하나쯤은 멋있는 앱을 만들어봐라!  -> 괘 어려운걸로 3주 잡고 제대로 해봐라.  5. 블로그 운영해라! 근데 내 고유의 커스텀 으로 하는게좋다  6. 사람 직접 만나기!  7. 멘토를 갖는 것은 정말 중요하다. 나보다 먼저 업계에 진입한 사람!  8. 될때까지 계속 구직해..

개발 정보 2022.02.12
반응형