본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

IT기술/CS(ComputerScience)29

[CS] java에서 String이 불변 객체인 이유 자바에서 String 문자열은 불변 객체입니다. String으로 선언한 변수가 변하지 않는 다는 뜻에서 불변이 붙은것은 아닙니다. String a = "num1"; a = "num2"; "num1"이라는 String 객체가 만들어지고 이를 a가 참조하는 식으로 내부에서 과정이 이루어집니다. a="num1"을 선언하며 "num1"이 상수풀에 없으면 num1을 새로 만들고 a로 참조하도록 하는 것입니다. 다만 a ="num2" 를 수행하며 값이 변경되는 게 아닌 "num2"라는 새로운 String 객체를 만들고 타입 a에 참조시키는 것입니다. 왜 이런 구조를 띠는걸까요? String 객체는 heap 메모리가 아닌 상수풀에 등록되고 참조를 반환합니다. 이렇게 설계된 이유는 String은 상당히 자주쓰여서 상수.. 2024. 4. 15.
[CS] SOP CORS 웹 개발에서 알아두면 좋은 내용 예전에는 출처(프로토콜, 호스트명, 포트)가 다르더라도 ajax 통신을 수행할 때 요청과 응답이 문제없이 가능했습니다. 하지만 이러한 방식에는 보안에 취약하다는 문제가 생길 수 있습니다. Cross-Site Scripting (XSS) 1. 사용자의 쿠키 정보를 가져오는 자바스크립트 코드(악성코드)를 포함한 게시글을 작성한다. 2. 어떤 사용자가 로그인하면 쿠키에 그 정보가 저장됨 3. 해커가 작성해둔 게시글을 사용자가 클릭했을 때 악성코드가 작동 4. 쿠키에 저장된 사용자 정보가 해커의 웹사이트에 전송됨 Cross-site request forgery (CSRF) - 사이트 간 요청 위조 1. 사용자가 보안이 취약한 서비스에 로그인 한다. 2. 사용자 정보가 쿠키에 저장된다. 3. 해커가 만든 피싱 사.. 2024. 4. 11.
[CS] 동기와 비동기의 차이, 멀티스레드와 비동기의 차이 동시성 이슈를 해결하는 과정에서 개념을 정리해볼 필요가 있어 정리하게 되었습니다. 동기와 비동기, 이게 무슨 이야기인지 정리해보려 합니다. synchronize (동기화) 란 무엇인가?? 현재 상태를 적용하는 것을 말하는 동기화, 내가 무언가 조치를 취했다면, 해당 내용이 반영되어야 합니다. 이를 위해 동기화를 말하는 것이며, 동시성을 이야기도 합니다. 동기화를 지원 이유는 공유자원을 다루면서 정합성이 깨지는 것을 방지하기 위해 사용하기도 합니다. 그럼 동기는 무엇인가요? 위의 동기화 와는 다르게, 프로그래밍에서 작업을 처리하는 방식에 대해 정할 때, 동기적으로 처리 또는 비동기적으로 처리 라고 이야기 할 수 있습니다. 동기화와 이름이 비슷하지만 구분해야 하는 개념이기에 먼저 적어봤습니다. 동기(Sync.. 2024. 3. 21.
웹 서버와 WAS(Web Application Server)의 차이점이 뭘까? 웹 서버와 WAS(Web Application Server)를 같이 연동해서 사용한 적이 있습니다. 성능의 향상을 위해 라는 이유로 둘을 동시에 연동해서 사용했는데 이번에 이 관련해서 정리해보려 합니다. 웹 서버(web server)는 HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말합니다. 주로 정적 컨텐츠를 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받거나 처리합니다. 동적 컨테츠가 필요할 때, WAS에 요청을 전달하여 처리한 결과를 클라이언트에게 전달합니다. 웹 애플리케이션 서버(Web Application Server, WAS)는 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공합니다. 주로 동.. 2024. 2. 8.
웹후크 란 무엇인가? 자격증을 공부하다가 웹후크 라는 단어를 접하게 되었다. 이게 무엇인가? 웹 후크는 한 컴퓨터 시스템이 다른 컴퓨터 시스템에 이벤트가 발생했음을 알리는 데 일반적으로 사용되는 것을 말한다. 웹 후크는 HTTP, JSON 같은 표준 웹 기술을 사용하며, API로도 가능하다. Tableau같은 경우는 후크를 사용하여 이벤트 알림을 구독할 수 있으며. 그러면 관련 이벤트가 트리거될 때 HTTP POST 알림이 선택한 URL에 전송된다. GIT 이나 여러 다른 사이트에서도 웹후크 기능을 제공하니 이런게 있다는 것 정도만 알아두자. https://www.tableau.com/ko-kr/developer/tools/webhook-api https://docs.github.com/ko/webhooks/using-web.. 2023. 12. 12.
NAT Gateway 개요 NAT Gateway는 클라우드 플랫폼 내부에 있는 여러 대의 비공인 IP를 가진 고객의 서버가 공인 IP 주소를 가진 외부 서버와 통신할 수 있도록 연결하는 NAT 서비스입니다. 비공인 IP 주소를 가진 다수의 서버가 하나의 NAT Gateway를 공유하거나, 여러 개의 NAT Gateway를 만들고 서버 그룹별로 각각의 NAT Gateway를 사용할 수도 있습니다. 고객이 사전에 등록한 외부의 공인 IP 주소를 가진 호스트에만 접속할 수 있도록 설정해 보안을 강화할 수 있습니다. 또한 Auto Scaling 서비스와 연결하여 새로 증설되는 서버가 자동으로 NAT Gateway를 이용하도록 설정할 수 있습니다. AWS 에선 NAT Gateway를 통해 전송하고 요청하는 것은 가능하나, NAT Gatew.. 2023. 11. 24.
RTO와 RPO 뭐냐 이게? RPO(Recovery Point Objective , 복구 시점 목표) RTO(Recovery Time Objective , 복구 시간 목표) 시스템을 구축하거나 업그레이드 할 때 장애나 재난이 발생했거나, 시스템에 치명적인 이상이 생겼을 경우 대응을 위해 복구를 진행할 것이다. 이때 사용되는 용어인데, RPO(복구시점목표) 즉 어느 시점으로 복구할 것인가? 와 PTO(복구시간목표) 언제까지 복구가 되는가? 를 줄여서 이야기 하는 것이다. 이는 고가용성을 갖추기 위해 신경써야 하는 부분으로 이런 용어가 있다는 정도만 알면 된다. 2023. 11. 24.
Stateful | Stateless 서비스 Stateful | Stateless 서비스의 개념을 알아보자. 1. Stateful 서비스 Client의 정보나 세션 정보를 server에 저장하는 서비스를 통틀어 Stateful 서비스 라고 한다. TCP 기반 통신이 대표적인 예시 2. Stateless 서비스 Client의 정보와 Server의 정보가 완전히 독립적인 서비스를 통틀어 Stateless 서비스 라고 한다. Server는 단순히 요청이 오면 응답을 보내는 역할만 수행하며, client가 능동적으로 요청해야 한다. UDP와 HTTP 같은게 대표적인 예시 3. Stateless 서비스가 주목받는 이유 Statelss 구조가 Stateful 구조 대비 갖는 몇가지 장점들로 인해 최근의 웹서비스 구조는 모두 Stateless 구조 기반을 따르.. 2023. 11. 24.
애자일 개발 프로세스 애자일 소프트웨어 개발(Agile software development) 혹은 애자일 개발 프로세스 소프트웨어 엔지니어링에 대한 개념적인 얼개로, 프로젝트의 생명주기동안 반복적인 개발을 촉진한다. 최근에는 애자일 게임 보급 등의 여파로 소프트웨어 엔지니어링 뿐 아니라 다양한 전문 분야에서 실용주의적 사고를 가진 사람들이 애자일 방법론을 적용하려는 시도를 하고 있다. 종류 애자일 개발 프로세스로 불리는 개발 방법론에는 다음과 같은 것들이 있다. 익스트림 프로그래밍(Extreme Programming, XP) - 애자일 개발 프로세스의 대표자로 애자일 개발 프로세스의 보급에 큰 역할을 하였다. 이 방법은 고객과 함께 2주 정도의 반복개발을 하고, 테스트우선 개발(TDD)을 특징으로 하는 명시적인 기술과 방법.. 2023. 8. 10.
소프트웨어 공학의 모든 것 - 유지보수 출처 : https://mini-noriter.tistory.com/31 포인트1. 유지보수 작업과 개발 작업의 차이는 무엇인가? 포인트2. 유지보수 작업 과정은 무엇인가? 포인트3. 형상관리 작업이란 무엇이며 그 절차와 방법은 무엇인가? 포인트4. 역공학과 리엔지니어링이란 무엇이며 어떻게 하는가? 포인트5. 유지보수 작업 방법과 지원 도구에는 어떤 것이 있는가? 유지보수 - 개발 후에 이루어지는 소프트웨어의 변경 작업 유지보수 단계는 소프트웨어가 가장 유용하게 활용되는 기간 소프트웨어는 환경과 비즈니스 요구에 따라 진화한다 11-1. 유지보수의 소개 - 레거시 시스템(Legacy System) 수십 년 전에 구축되었지만 지금까지 사용되고 있는 소프트웨어 시스템 - 레거시 시스템을 대체하지(=소멸하지) .. 2023. 8. 7.
[CS] OOM의 원인과 아주 간단하게 OOM 발생 시키기 outofmemory가 나는 이유 설정된 메모리 대비 요청되는 메모리가 많기 때문에 나타나는 JVM에서 발생하는 에러 설정의 오류나 사용량 초과로 인해 jdk 5 같은 경우는 jdk hotspot 버그로 인해 oom이 났던 경우도 있었음 oom 예시 Application의 oom(순간적) 과도한 데이터 조회(100만건 200만건씩 조회해서 메모리 들고 있는 경우, 업로드 파일을 후처리 하기로 해서 메모리에 들고 있는 경우) 잘못된 데이터 조작(string) 장시간에 걸쳐서 서서히 메모리가 장식되는 경우(memory leak) Cache(어떤 데이터를 여러 쓰레드가 공유해서 사용하는 경우) leak Pool(배타적으로 사용할 때) leak (oom 가기 이전에 풀 부족으로 2차 장애가 발생하는 경우도 많음.. 2023. 8. 3.
개발에서 빌드도구(Build tool) maven, gradle 살펴보기 빌드도구 살펴보기 빌드도구를 접하기 전 솔로로 여러 개발을 해오던 나는 이런 개념을 접할 방법이 없어 모르던 내용이었다. 개발 툴을 세팅하는 방법이나 빌드를 편하게 하는 방법들은 속되게 말하면 돈버는 기술과 노하우다. 넷에서 쉽게 찾을 수 없으며 간혹 글이 있더라도 반복 숙달로 연습되지 않으면 이해하기 힘들다. 이런 개념을 모르고 일했던 내가 신기하기만 하고 미쳤나 싶기도 하다. 홈페이지 하나를 메모장만 가지고 웹 디자인까지 해가며 백앤드 세팅까지 다 끝내고 오류 다잡아낸 나다.... 요즘은 개발툴, 빌드툴로 다한다매? 세상 존나편하네 사수없이 초보시절을 지내다보니 이런 오차가 있는 것 같다만, 스스로 알아낼 수 밖에 없는 거 같다. 새로운 프로젝트를 시작하는 단계에서 어떤 프로그래밍 언어를 사용할까? .. 2023. 4. 18.