이는 사용료를 지불하면서 빌려쓰는 방식으로 IT 자원에 대한 구매가 아닌 '구독'을 하고 사용한 만큼 사용료를 지불한다.
따라서 초기 토자 비용이 절감되기도 한다. 또한 클라우드는 정기적인 최신 성능 업그레이드가 이루어지기 때문에 시설 노후화에 대한 부담 감소가 있다. 그리고 OPEX 기반 환경이므로 CAPEX가 적고 특정 기업에 갇힐 확률이 적다.
하지만 클라우드에서 정보 유출 사고가 발생할 경우 detect가 힘들고 인터넷이 어떻게 끊길지 모른다는 단점이 있다.
이는 대체로 규모가 중-소인 기업에 적절하다.
📌 Private cloud
프라이빗 클라우드는 자신의 온프레미스(on-premise)내에 클라우드 플랫폼을 구축해서 운영한다.
자체적으로 보안 시스템을 운영할 수 있고, 사용자의 필요와 요구에 따라 맞춤형 구축이 가능하다는 장점이 있다.
하지만 설치운영 비용인 CAPEX가 생기고 관리를 위한 전문가 고용이 필요하다는 단점이 있다. 또한 특정 기업에 갇힐 확률이 크다.
이는 규모가 큰 비지니스에 적절하다.
📌 Hybrid cloud
하이브리드 클라우드는 public과 private cloud를 혼합한 형태이다. 보안이 중요한 것은 private cloud로, 신규 서비스나 이벤트 등 예측하기 어려운 대용량 데이터는 신속하게 자원을 확장할 수 있도록 public cloud에 배치하는 것이다. 이는 퍼블릭 클라우드의 유연성과 확장성, 비용 효율성을 누리면서 보안 걱정을 덜 수 있다.
비밀번호 입력창에 눈 아이콘 버튼을 두고 이 버튼을 선택함에 따라 비밀번호 보기/숨기기를 구현하려고 한다.
해당 뷰는 스토리보드로 구현하였으며 해당 TextField와 Button 네이밍은 다음과 같다.
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var passwordEyeButton: UIButton!
passwordTextField는 .isSecureTextEntry속성 default 값을 true로 주었다.
📌 필요한 로직
이 기능을 구현하기 위해서는 세 가지 설정이 필요하다.
버튼 선택 상태 변경
비밀번호 보기/숨기기
눈 아이콘(버튼 이미지) 변경
📌 코드
@IBAction func passwordEyeButtonDidTap(_ sender: Any) {
// 보안 설정 반전
passwordTextField.isSecureTextEntry.toggle()
// 버튼 선택 상태 반전
passwordEyeButton.isSelected.toggle()
// 버튼 선택 상태에 따른 눈 모양 이미지 변경
let eyeImage = passwordEyeButton.isSelected ? "password shown eye icon" : "password hidden eye icon"
passwordEyeButton.setImage(UIImage(named: eyeImage), for: .normal)
// 버튼 선택된 경우 자동으로 들어가는 틴트 컬러를 투명으로 변경해줌
passwordEyeButton.tintColor = .clear
}
📌 마치며
처음에 eyeButton.isSelected 값을 바꿔주는 코드를 작성하지 않아서 비밀번호 보안 설정은 바뀌지만 눈 모양 아이콘 변경이 되지 않았다.
passwordTextField 보안 설정을 toggle()로 변경해준 코드를 보고 passwordEyebButton도 바꿔줬다고 착각해서 삽질을 했다는 거~ 🫠